Добавление переключателя в стандартную форму регистрации Wordpress - PullRequest
0 голосов
/ 08 апреля 2020

Это мой первый вопрос здесь, надеюсь, я все делаю правильно. Я использую это Учебное пособие , чтобы попытаться добавить переключатель для установки роли пользователя в стандартной форме регистрации Wordpress.

К сожалению, мой код не работает должным образом ($ role won даже не заполняется, и я продолжаю получать свое собственное сообщение об ошибке). Мои php знания все еще находятся в начале.

...

if($_POST['roleType'] == 'eins') {
        $role = '1';
    } elseif($_POST['roleType'] == 'zwei') {
        $role = '2';
    } elseif($_POST['roleType'] == 'drei') {
        $role = '3';
    } 
    // else { 
    //     $role = 'subscriber';
    // }

    ?>
    <p>
        <label><?php esc_html_e( 'Was wollen Sie inserieren', 'crf' ) ?><br/>
            <input  type="radio"
                    name="roleType"
                    value="eins"
            />1<br>
            <input  type="radio"
                    name="roleType"
                    value="zwei"
            />2<br>
            <input  type="radio"
                    name="roleType"
                    value="drei"
            />3<br>
        </label>
    </p>
    <?php
}

add_filter( 'registration_errors', 'crf_registration_errors', 10, 3 );
function crf_registration_errors( $errors ) {

    if ( empty( $role ) ) {
        $errors->add( 'roleType_empty', __( '<strong>ERROR</strong>: Please choose what content you are going to create.', 'crf' ) );
    }

    return $errors;
}

add_action( 'user_register', 'crf_user_register' );
function crf_user_register( $user_id ) {
    if ( ! empty( $role ) ) {
        update_user_meta( $user_id, 'role', $role );
    }
}

Я был бы рад, если бы кто-нибудь мог дать мне краткий намек на то, что я делаю неправильно, здесь.

Спасибо ура, Йоханнес

1 Ответ

0 голосов
/ 08 апреля 2020

Добро пожаловать в переполнение стека.

В функции crf_user_register, $role пусто, поскольку эта переменная не имеет значения в области действия .

Вы можете либо присвоить значение $role:

function crf_user_register( $user_id ) {
    $role = $_POST['roleType'];
    if ( ! empty( $role ) ) {
        update_user_meta( $user_id, 'role', $role );
    }
}

, либо просто использовать переменную POST:

function crf_user_register( $user_id ) {
    if ( ! empty( $_POST['roleType'] ) ) {
        update_user_meta( $user_id, 'role', $_POST['roleType'] );
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...