Домой WordPress WordPress: Вопросы и ответы Как добавить выбор роли пользователя при регистрации?
2ответ(ов) в теме
romka.roman
не в сети 6 лет
На сайте с 22.06.2018
Участник
Тем 9
Сообщения 24
1
20:18

Здравствуйте. Вот сделал такую вещь для выбора роли при регистрации. К сожалению она не работает и не могу понять почему.
Привожу весь код целиком (тот что был кастомизирован)

function rcl_insert_user($data){

    if ( get_user_by('email', $data['user_email']) )
        return false;

    if ( get_user_by('login', $data['user_login']) )
        return false;

    if ( get_user_by('role_u', $data['user_role']) )
        return false;

    switch($data['user_role']){
        case 'customer':
            $role_user = 'customer';
            break;
        case 'expert':
            $role_user = 'expert';
            break;
        default:
            $role_user = 'customer';
            break;
    }
    $userdata = array_merge($data, array(
        'user_nicename' => ''
        ,'nickname' => $data['user_email']
        ,'first_name' => $data['display_name']
        ,'rich_editing' => 'true'  // false - выключить визуальный редактор для пользователя.
        ,'role' => $role_user
    ));

    $user_id = wp_insert_user( $userdata );
    
    if(!$user_id || is_wp_error( $user_id ) ) {
        return false;
    }

    $timeAction = '0000-00-00 00:00:00';

    if(rcl_get_option('confirm_register_recall')){
        wp_update_user( array ('ID' => $user_id, 'role' => 'customer') ) ;
    }else{
        $timeAction = current_time('mysql');
    }
    
    global $wpdb;
    
    $wpdb->insert( RCL_PREF .'user_action', array( 'user' => $user_id, 'time_action' => $timeAction ));

    rcl_register_mail(array(
        'user_id'=>$user_id,
        'user_pass'=>$userdata['user_pass'],
        'user_login'=>$userdata['user_login'],
        'user_email'=>$userdata['user_email'],
        'user_role'=>$userdata['user_role'],
    ));

    wp_send_new_user_notifications( $user_id, 'admin' );
    
    do_action('rcl_insert_user', $user_id, $userdata);

    return $user_id;
}

Вот сами изменения
if ( get_user_by('role_u', $data['user_role']) )
        return false;

    switch($data['user_role']){
        case 'customer':
            $role_user = 'customer';
            break;
        case 'expert':
            $role_user = 'expert';
            break;
        default:
            $role_user = 'customer';
            break;
    }

И дальше привожу саму форму регистрации
<?php $user_role = (isset($_REQUEST['user_role']))? $_REQUEST['user_role']: ''; ?>

    <form action="<?php rcl_form_action('register'); ?>" method="post" enctype="multipart/form-data">
        <div class="form-block-rcl default-field">
            <input required type="text" placeholder="<?php _e('Login','wp-recall'); ?>" value="<?php echo $user_login; ?>" name="user_login" id="login-user">
            <i class="fa fa-user"></i>
            <span class="required">*</span>
        </div>
        <div class="form-block-rcl default-field">
            <input required type="email" placeholder="<?php _e('E-mail','wp-recall'); ?>" value="<?php echo $user_email; ?>" name="user_email" id="email-user">
            <i class="fa fa-at"></i>
            <span class="required">*</span>
        </div>
        <div class="form-block-rcl default-field">
            <select name="user_role" id="role-user">
                <option value="customer">Заказчик</option>
                <option value="expert">Эксперт</option>
            </select>
            <span class="required">*</span>
        </div>
        <div class="form-block-rcl form_extend">
            <?php do_action( 'register_form' ); ?>
        </div>
        <div class="form-block-rcl">
            <input type="submit" class="recall-button" name="submit-register" value="<?php _e('Signup','wp-recall'); // Зарегистрироваться ?>">
            
            <?php echo wp_nonce_field('register-key-rcl','_wpnonce',true,false); ?>
            <input type="hidden" name="redirect_to" value="<?php rcl_referer_url('register'); ?>">
        </div>
    </form>

0
romka.roman
не в сети 6 лет
На сайте с 22.06.2018
Участник
Тем 9
Сообщения 24
2
21:03

Проблема решена

0
Тема закрыта. Публикация новых сообщений запрещена.