0

i want to write one plugin with this Properies : 1- register with phone number 2- login just with phone number and password in login form.

now my code is :

    add_action( 'register_form', 'crf_registration_form' );
function crf_registration_form() { ?>
 <p>
        <label for="mpmobile">شماره موبایل<br/>
            <input type="text" class="form-control" name="mpmobile" id="reg_billing_mob_num" value="<?php if ( ! empty( $_POST['mpmobile'] ) ) esc_attr_e( $_POST['mpmobile'] ); ?>" />
        </label>
</p>
<?php
}
add_filter( 'registration_errors', 'crf_validate_mobnum_register', 10, 3 );
function crf_validate_mobnum_register( $errors, $sanitized_user_login, $user_email ) {
    if ( isset( $_POST['mpmobile'] ) && empty( $_POST['mpmobile'] ) ) {
        $errors->add( 'mpmobile_error', __( 'شماره تلفن همراه خود را وارد کنید.', 'woocommerce' ) );
    }
    elseif (isset( $_POST['mpmobile'] ) &&  !preg_match("/^09-?[0-9]{2}-?[0-9]{3}-?[0-9]{4}$/",  $_POST['mpmobile'] )) {
        $errors->add( 'mpmobile_error', __( 'شماره تلفن همراه خود را در قالب درست وارد کنید.', 'woocommerce' ) );
    }
    else {
        $yoursearchquery =  $_POST['mpmobile'] ;
        $args = array( 'meta_key' => 'mpmobile', 'meta_value' => $yoursearchquery, 'number' => 1 ) ;

        $user_query = new WP_User_Query( $args );
        // User Loop
        if ( ! empty( $user_query->results ) ) {
            $errors->add( 'mpmobile_error', __( 'این شماره تلفن در سیستم قبلا ثبت نام شده است.', 'woocommerce' ) );
        }
    }
    return $errors;
}

add_action( 'user_register', 'crf_user_register' );
function crf_user_register( $user_id ) {
    if ( isset( $_POST['mpmobile'] ) ) {
        update_user_meta( $user_id, 'mpmobile', sanitize_text_field( $_POST['mpmobile'] ) );
    }
}

add_action( 'show_user_profile', 'my_show_mobnum_profile_fields' );
add_action( 'edit_user_profile', 'my_show_mobnum_profile_fields' );
function my_show_mobnum_profile_fields ( $user ){
    ?>
<table class="form-table">
    <tr>
        <th><label for="mpmobile">شماره تلفن همراه</label></th>
        <td>
            <input type="text" name="mpmobile" id="mpmobile" value="<?php echo esc_attr( get_the_author_meta( 'mpmobile', $user->ID ) ); ?>" class="regular-text" />
            <span class="description">لطفا شماره تلفن همراه را وارد کنید ، به طور مثال : ۰91200000000</span>
        </td>
    </tr>
</table>
<?php }
add_action( 'personal_options_update', 'save_extra_user_profile_fields' );
add_action( 'edit_user_profile_update', 'save_extra_user_profile_fields' );

function save_extra_user_profile_fields( $user_id ) {

if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }

update_user_meta( $user_id, 'mpmobile', $_POST['mpmobile'] );
}

now i dont know how i shold delete username/email fild and replace it with my user meta (phone number)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.