• Главная»
  • Уроки»
  • Wordpress»
  • Собственное управление пользователями в WordPress — Часть 2: Регистрация нового пользователя

Собственное управление пользователями в WordPress — Часть 2: Регистрация нового пользователя

В первом уроке данной серии по настройке WordPress под себя мы создали плагин, который заменяет собой страницу входа пользователя в систему. Сегодня мы пойдём дальше и заменим ещё одну часть, а именно процесс регистрации нового пользователя.

Помимо доводов, которые были перечислены в первой части остаются в силе, однако, для замены страницы регистрации есть ещё несколько причин:

  • Во-первых, при регистрации вы можете запросить любую искомую информацию, добавив соответствующие поля. К примеру, в этом уроке, мы удалим поле имени, а в качестве логина попросим ввести email.
  • Во-вторых, пресечём спам-регистрацию. Когда я запустил свой первый сайт на WordPress с открытой регистрацией, то в первые же часы база пользователей начала набиваться спам-пользователями. Этот недостаток лечится добавлением поля reCAPTCHA.
  • В третьих, после регистрации вы можете сделать какие-то дополнительные действия, к примеру, добавить email пользователя в список рассылки. При своей собственной регистрации сделать это очень просто.

Согласитесь, что это веские причины, так что давайте начнём.

В этом уроке вы научитесь заменять стандартную страницу регистрации WordPress, игнорируя при этом все возможности WordPress.

Данный функционал мы будем строить на базе примера, который начали в прошлом уроке. Финальный код проекта вы сможете найти на Github.

Добавление собственной страницы регистрации нового пользователя

Стандартная страница регистрации в WordPress (wp-login.php?action=register) выглядит следующим образом:

Неплохо, но не то что нам нужно в вопросе возможностей и дизайна.

Заметка: если вы не можете попасть на страницу регистрации, то возможно, данная возможность отключена (по умолчанию). Для того чтобы это изменить, отправляемся в раздел Настройки -> Общие и ставим галочку напротив "Любой может зарегистрироваться". Далее сохраняем настройки и отправляемся на страницу регистрации.

В первой части нами была создана страница для входа пользователя в систему и шорткод, который выводил соответствующую форму. То же самое нам нужно сделать для регистрации: во-первых, создадим шорткод для отображения формы, а затем страницу, где эта форма будет выведена.

В будущем вы сможете поместить данную форму на другой странице или поместить вход и регистрацию в одном месте.

Шаг 1: Создание шорткода

В самом начале плагина, созданного в первой части создаём шорткод для регистрации пользователя.

В конце конструктора класса плагина (Personalize_Login_Plugin), добавляем объявление нового шорткода:

add_shortcode( 'custom-register-form', array( $this, 'render_register_form' ) );

Далее создаём функцию, отвечающую за рендеринг формы:

/**
 * Шорткод для рендеринга формы регистрации нового пользователя.
 *
 * @param  array   $attributes  Атрибуты шорткода.
 * @param  string  $content     Контент шорткода. Не используется.
 *
 * @return string  The shortcode output
 */
public function render_register_form( $attributes, $content = null ) {
    // Разбор атрибутов шорткода
    $default_attributes = array( 'show_title' => false );
    $attributes = shortcode_atts( $default_attributes, $attributes );

    if ( is_user_logged_in() ) {
        return __( 'You are already signed in.', 'personalize-login' );
    } elseif ( ! get_option( 'users_can_register' ) ) {
        return __( 'Registering new users is currently not allowed.', 'personalize-login' );
    } else {
        return $this->get_template_html( 'register_form', $attributes );
    }
}

Если вы прошли первую часть урока, то не могли не заметить схожесть кода.

Во-первых, на строках 10-12, видно, что шорткод будет принимать атрибут show_title, который будет отвечать за вывод заголовка.

Во-вторых, форма регистрации не будет отображаться пользователям, которые уже вошли в систему (строки 14-15). Сообщение, которое будет возвращено очень простое, так что в будущем вы можете добавить что-то своё, к примеру, ссылку на сводку в панели управления.

На строке 16 WordPress проверяет значение переменной users_can_register. Значение берётся из раздела Общие настройки и поля Любой может зарегистрироваться. Мы так же примем во внимание данную настройку и не будем отображать форму, если значение данного поля равно false. Именно поэтому на строке 17 мы выводим соответствующее сообщение.

Рендеринг формы происходит на строке 19, используя PHP шаблон register_form.php, расположенный в папке templates. В первой части мы подробно обсуждали как происходит формирование кода, согласно шаблона, используя функцию get_template_html.

Теперь давайте добавим шаблон регистрации нового пользователя.

Шаг 2: Создание формы регистрации нового пользователя

В папке templates создаём новый PHP файл register_form.php. Затем вставляем форму регистрации и все нужные поля.

В нашей версии не будет лишних полей, а вместо поля логина мы будем использовать email.

Как и в стандартном функционале WordPress, новому пользователю на почтовый ящик будет отправлен сформированный пароль. Это своего рода подтверждение регистрации. Если пользователь указал неверный email, то и аутентифицироваться на нашем сайте у него не получится.

Конечно же в данном способе так же есть свои минусы, так что было бы неплохо попросить пользователя сменить пароль при первом входе.

<div id="register-form" class="widecolumn">
    <?php if ( $attributes['show_title'] ) : ?>
        <h3><?php _e( 'Register', 'personalize-login' ); ?></h3>
    <?php endif; ?>

    <form id="signupform" action="<?php echo wp_registration_url(); ?>" method="post">
        <p class="form-row">
            <label for="email"><?php _e( 'Email', 'personalize-login' ); ?> <strong>*</strong></label>
            <input type="text" name="email" id="email">
        </p>

        <p class="form-row">
            <label for="first_name"><?php _e( 'First name', 'personalize-login' ); ?></label>
            <input type="text" name="first_name" id="first-name">
        </p>

        <p class="form-row">
            <label for="last_name"><?php _e( 'Last name', 'personalize-login' ); ?></label>
            <input type="text" name="last_name" id="last-name">
        </p>

        <p class="form-row">
            <?php _e( 'Note: Your password will be generated automatically and sent to your email address.', 'personalize-login' ); ?>
        </p>

        <p class="signup-submit">
            <input type="submit" name="submit" class="register-button"
                   value="<?php _e( 'Register', 'personalize-login' ); ?>"/>
        </p>
    </form>
</div>

На строках 2-4 происходит вывод заголовка, который передаётся в атрибуте show_title шорткода.

Далее на строке 6, обратите внимание на параметр action: данные формы будут отправлены на стандартный URL регистрации пользователя, который извлекается из переменной wp_registration_url. Чуть позже мы этим займёмся более интенсивно, но сразу хотелось бы сказать, что мы не будем полагаться на функционал WordPress...

Оставшийся HTML код - это просто поля email-а, имени и фамилии.

Перед демонстрацией шорткода в действии нам нужно вставить его на соответствующей странице.

Шаг 3: Создание страницы регистрации нового пользователя

Для отображения формы регистрации вставьте следующий шорткод на соответствующую страницу:

[custom-register-form]

Данный шорткод можно разместить на любой странице. Мы же выберем страницу регистрации.

В предыдущей части, мы создали функцию plugin_activated, где добавили массив страниц, которые должны быть созданы при активации плагина.

Давайте добавим новый элемент массива, то есть другими словами новую страницу. После добавления массив должен будет выглядеть вот так (добавили страницу со слагом member-register):

// Информация о страницах, которые необходимо создать
$page_definitions = array(
    'member-login' => array(
        'title' => __( 'Sign In', 'personalize-login' ),
        'content' => '[custom-login-form]'
    ),
    'member-account' => array(
        'title' => __( 'Your Account', 'personalize-login' ),
        'content' => '[account-info]'
    ),
    'member-register' => array(
        'title' => __( 'Register', 'personalize-login' ),
        'content' => '[custom-register-form]'
    ),
);

Данный хук запускается только при активации плагина, так что для внесения изменений, деактивируйте плагин и снова его включите. Теперь при переходе на URL http://<YOUR SITE>/member-register, вы должны увидеть нечто следующее (если вы используете стандартную тему Twenty Fifteen):

Шаг 4: Направление пользователя на нашу страницу регистрации

Перед тем как сделать тест-драйв нашей формы давайте сделаем так чтобы пользователь при клике по кнопке регистрации направлялся на нашу страницу, вместо wp-login.php?action=register.

Для этого воспользуемся хуком login_form_{action}, который должен быть вам знаком из первой части. Он запускается перед вызовом wp-login.php. Как видно из ссылки, названия действия равно register, а это значит что наш хук будет называться login_form_register.

В конструкторе плагина добавляем следующее:

add_action( 'login_form_register', array( $this, 'redirect_to_custom_register' ) );

Затем создаём функцию-колбэк:

/**
 * Направление пользователя на собственную страницу регистрации
 * вместо wp-login.php?action=register.
 */
public function redirect_to_custom_register() {
    if ( 'GET' == $_SERVER['REQUEST_METHOD'] ) {
        if ( is_user_logged_in() ) {
            $this->redirect_logged_in_user();
        } else {
            wp_redirect( home_url( 'member-register' ) );
        }
        exit;
    }
}

Реализуя данный хук действия login_form_register, мы понимаем, что пользователь захочет зайти на страницу регистрации или отправить данные формы.

Именно поэтому первое действие, которые мы сделаем (на строке 6) проверяем тип запроса доступа к странице: направление будет осуществляться только в случае передачи GET запроса; В случае передачи запроса типа POST будет происходить передача данных на обработку и регистрацию.

Так же мы включили в данный код проверку аутентификации пользователя (строка 7).

Пользователи, которые уже зашли в систему будут направляться на страницу профиля (или админку), используя функцию redirect_logged_in_user, написанную в первой части. Все остальные попадут на страницу member-register.

Теперь давайте позаботимся о том что будет происходить при отправке формы.

Регистрация нового пользователя

По умолчанию данные формы регистрации будут направлены на адрес wp-login.php?action=register. Этот же URL мы используем для направления пользователя на страницу регистрации.

Для добавления изменений, которые были упомянуты ранее нам необходимо заменить текущую логику нашей собственной. Для этого создадим функцию регистрации нового пользователя, а затем в нужном месте и нужное время вызовем её.

Шаг 1: Создание пользователя

Давайте начнём с функции, где будет создан новый пользователь исходя из полей: email, имя, фамилия. Так же следует отметить что поле email будем воспринимать как уникальное, а остальные как дополнительный бонус.

В классе плагина добавляем следующую функцию:

/**
 * Валидация данных и запуск процесса регистрации пользователя.
 *
 * @param string $email         Новый email пользователя
 * @param string $first_name    Имя пользователя
 * @param string $last_name     Фамилия пользователя
 *
 * @return int|WP_Error         Id нового пользователя или ошибка.
 */
private function register_user( $email, $first_name, $last_name ) {
    $errors = new WP_Error();

    // Email будет использоваться в качестве адреса почты и логина
    // Это единственный параметр, который нам нужно проверить
    if ( ! is_email( $email ) ) {
        $errors->add( 'email', $this->get_error_message( 'email' ) );
        return $errors;
    }

    if ( username_exists( $email ) || email_exists( $email ) ) {
        $errors->add( 'email_exists', $this->get_error_message( 'email_exists') );
        return $errors;
    }

    // Формирование пароля, который будет отправлен на почту пользователя...
    $password = wp_generate_password( 12, false );

    $user_data = array(
        'user_login'    => $email,
        'user_email'    => $email,
        'user_pass'     => $password,
        'first_name'    => $first_name,
        'last_name'     => $last_name,
        'nickname'      => $first_name,
    );

    $user_id = wp_insert_user( $user_data );
    wp_new_user_notification( $user_id, $password );

    return $user_id;
}

Как было упомянуто ранее, email пользователя - это единственное значение, которое нам нужно проверять на уникальность. Поэтому мы начинаем функцию именно с этого. Для начала на строке 15 мы валидируем почтовый ящик, а затем на строке 20 проверяем наличие в нашей базе. Если валидация провалится, то будет возвращён объект Wp_Error. Вскоре мы реализуем вывод ошибок.

Если проверка пройдёт успешно, то далее будет запущена генерация пароля на строке 26.

На строках 28-37 происходит самое важное: создание нового пользователя. Для добавления нового пользователя в WordPress используется функция wp_insert_user (строка 37). Данная функция принимает ассоциативный массив с информацией о новом пользователе. Как видно на строках 28-35, мы используем $email в качестве имени пользователя (user_login) и почтового ящика (email). За информацией о полном списке полей, которые могут быть задействованы при регистрации, обратитесь к кодексу WordPress.

После создания нового пользователя, на строке 38 происходит вызов функции wp_new_user_notification для отправки пароля пользователю на email.

Шаг 2: Вызов кода регистрации пользователя при отправке формы

Теперь, когда у нас есть код регистрации нового пользователя, нам нужно его вызвать при отправке формы.

Ранее, когда мы добавили направление на наше собственную страницу регистрации в login_form_register, я упомянул, что мы будем использовать тот же адрес для POST запросов.

Это не единственный способ реализации поставленной задачи. Однако данный способ гарантирует, что пользователь никаким образом не сможет попасть на стандартный функционал регистрации пользователей, предусмотренный в WordPress.

Создаём новую функцию и вызываем её при соответствующем действии.

В конструкторе класса плагина добавляем новую запись:

add_action( 'login_form_register', array( $this, 'do_register_user' ) );

Затем реализуем саму функцию:

/**
 * Отлов регистрации нового пользователя.
 *
 * Будет задействована через хук "login_form_register" в wp-login.php
 * при регистрации.
 */
public function do_register_user() {
    if ( 'POST' == $_SERVER['REQUEST_METHOD'] ) {
        $redirect_url = home_url( 'member-register' );

        if ( ! get_option( 'users_can_register' ) ) {
            // Регистрация закрыта, отображение ошибки
            $redirect_url = add_query_arg( 'register-errors', 'closed', $redirect_url );
        } else {
            $email = $_POST['email'];
            $first_name = sanitize_text_field( $_POST['first_name'] );
            $last_name = sanitize_text_field( $_POST['last_name'] );

            $result = $this->register_user( $email, $first_name, $last_name );

            if ( is_wp_error( $result ) ) {
                // Разбор ошибок и передача их в качестве параметров при редиректе
                $errors = join( ',', $result->get_error_codes() );
                $redirect_url = add_query_arg( 'register-errors', $errors, $redirect_url );
            } else {
                // Успех, направления пользователя на страницу входа.
                $redirect_url = home_url( 'member-login' );
                $redirect_url = add_query_arg( 'registered', $email, $redirect_url );
            }
        }

        wp_redirect( $redirect_url );
        exit;
    }
}

Функция начинается с проверки типа запроса на строке 8: она связана с WordPress действием login_form_register; тем же что мы использовали для перенаправления пользователя. В зависимости от типа запроса будет выполнено то или иное действие.

На строке 11 проверяется доступность опции регистрации новых пользователей. Если регистрация запрещена, то отправляем пользователя на страницу с соответствующим сообщением (closed) и параметром (register-errors).

В другом случае, если регистрация разрешена, то мы собираем параметры (строки 15-17) из формы и передаём в функцию регистрации (строка 19), которую создали в предыдущем шаге.

После вызова register_user, функция перенаправит пользователя в зависимости от результата:

  • Если ошибок не возникло, пользователь будет направлен на страницу входа пользователя в систему; так же будет передан параметр $registered, который сообщит о создании нового пользователя.
  • В случае возникновения ошибки, пользователю снова отобразится страница регистрации с рекомендациями устранения ошибок (строки 23-24).

Шаг 3: Отображение ошибок и сообщения об успехе

Вне зависимости от успеха регистрации, нам нужно вывести информативное сообщение.

Давайте реализуем вывод сообщений пользователю. Начнём с сообщений об ошибке заполнения формы.

В шаблон render_register_form добавьте следующий код:

// Получаем сообщения об ошибках из параметра запроса
$attributes['errors'] = array();
if ( isset( $_REQUEST['register-errors'] ) ) {
    $error_codes = explode( ',', $_REQUEST['register-errors'] );

    foreach ( $error_codes as $error_code ) {
        $attributes['errors'] []= $this->get_error_message( $error_code );
    }
}

В данном сниппете мы проверяем наличие ошибок в соответствующем параметре register-errors (строка 2). Если они присутствуют, то проходимся по ним, используя функцию get_error_message, которую создали в первой части.

Сообщения об ошибках будут сформированы в массиве $attributes, которые мы выведем в шаблоне.

В зависимости от результата функции get_error_message осуществим выбор сообщений в конструкции switch:

// Ошибки при регистрации

case 'email':
    return __( 'The email address you entered is not valid.', 'personalize-login' );

case 'email_exists':
    return __( 'An account exists with this email address.', 'personalize-login' );

case 'closed':
    return __( 'Registering new users is currently not allowed.', 'personalize-login' );

Для отображения ошибок на странице регистрации, добавьте следующий код в шаблон register_form.php между заголовком и формой:

<?php if ( count( $attributes['errors'] ) > 0 ) : ?>
    <?php foreach ( $attributes['errors'] as $error ) : ?>
        <p>
            <?php echo $error; ?>
        </p>
    <?php endforeach; ?>
<?php endif; ?>

Далее давайте добавим сообщение об успехе операции.

После успешной регистрации, пользователь будет направлен на страницу входа с параметром registered={email address}.

В функции render_login_form, добавьте следующие строки:

// Проверка на факт регистрации пользователя
$attributes['registered'] = isset( $_REQUEST['registered'] );

Далее в шаблоне login_form.php проверяем флаг registered:

<?php if ( $attributes['registered'] ) : ?>
    <p class="login-info">
        <?php
            printf(
                __( 'You have successfully registered to <strong>%s</strong>. We have emailed your password to the email address you entered.', 'personalize-login' ),
                get_bloginfo( 'name' )
            );
        ?>
    </p>
<?php endif; ?>

Вот и всё. Теперь у нас есть вполне функциональная форма регистрации, с валидацией данных и выводом сообщений об ошибках.

Можете опробовать функционал и создать нового пользователя.

Если вы тестируете плагин на локальном сервере, то убедитесь что у вас выставлены настройки для отправки писем. В противном случае вы не получите письмо с паролем — это нормально.

Борьба со спамом: подключение Google ReCaptcha

Теперь было бы неплохо защитить нашу форму от спама, добавив проверку reCAPTCHA.

Шаг 1: Получение ключа

Отправляемся на сайт reCAPTCHA. Кликаем по кнопке "Get reCAPTCHA" и попадаем в панель администрирования.

Если вы не аутентифицированы в Google, то вас попросят войти.

На странице вашего аккаунта reCAPTCHA вы обнаружите форму. Заполните её информацией о вашем сайте.

После этого кликаем по кнопке Register, и получаем два ключа для работы с API: Site Key и Secret Key.

Для хранения полученных значений в плагине WordPress, нужно создать несколько полей. Для простоты поместим их в Основных настройках.

Для добавления полей необходимо захукать новое действие. В конструкторе плагина добавьте следующую строку:

add_filter( 'admin_init' , array( $this, 'register_settings_fields' ) );

Затем создайте функцию для вывода полей:

/**
 * Регистрируем текстовые поля настройки плагина.
 */
public function register_settings_fields() {
    // Создаём два поля для хранения ключей от reCAPTCHA
    register_setting( 'general', 'personalize-login-recaptcha-site-key' );
    register_setting( 'general', 'personalize-login-recaptcha-secret-key' );

    add_settings_field(
        'personalize-login-recaptcha-site-key',
        '<label for="personalize-login-recaptcha-site-key">' . __( 'reCAPTCHA site key' , 'personalize-login' ) . '</label>',
        array( $this, 'render_recaptcha_site_key_field' ),
        'general'
    );

    add_settings_field(
        'personalize-login-recaptcha-secret-key',
        '<label for="personalize-login-recaptcha-secret-key">' . __( 'reCAPTCHA secret key' , 'personalize-login' ) . '</label>',
        array( $this, 'render_recaptcha_secret_key_field' ),
        'general'
    );
}

public function render_recaptcha_site_key_field() {
    $value = get_option( 'personalize-login-recaptcha-site-key', '' );
    echo '<input type="text" id="personalize-login-recaptcha-site-key" name="personalize-login-recaptcha-site-key" value="' . esc_attr( $value ) . '" />';
}

public function render_recaptcha_secret_key_field() {
    $value = get_option( 'personalize-login-recaptcha-secret-key', '' );
    echo '<input type="text" id="personalize-login-recaptcha-secret-key" name="personalize-login-recaptcha-secret-key" value="' . esc_attr( $value ) . '" />';
}

Поскольку тема данного урока не касается WordPress Settings API, то мы не будем тут останавливаться.

Теперь отправляемся на страницу настроек и вводим два ключа от reCAPTCHA.

Шаг 2: Отображение CAPTCHA

Все подготовительные моменты завершены, а это значит, что мы готовы добавить reCAPTCHA на нашу страницу регистрации.

Для начала получаем ключи reCAPTCHA в render_registration_form и помещаем в массиве $attributes, которые будут переданы в шаблон:

// Получение ключей recaptcha
$attributes['recaptcha_site_key'] = get_option( 'personalize-login-recaptcha-site-key', null );

Затем выводим reCAPTCHA выше кнопки submit:

<?php if ( $attributes['recaptcha_site_key'] ) : ?>
    <div class="recaptcha-container">
        <div class="g-recaptcha" data-sitekey="<?php echo $attributes['recaptcha_site_key']; ?>"></div>
    </div>
<?php endif; ?>

Поле reCAPTCHA будет помещено в отдельный div, используя JavaScript. Именно поэтому нам нужно в конце страницы подключить соответствующий JS файл.

Для этого в WordPress предусмотрена специальная конструкция:

add_action( 'wp_print_footer_scripts', array( $this, 'add_captcha_js_to_footer' ) );

Создаём новую функцию add_captcha_js_to_footer которая выведет подключение JavaScript файла:

/**
 * Функция подключения JavaScript файла reCAPTCHA
 * в конце страницы.
 */
public function add_captcha_js_to_footer() {
    echo "<script src='https://www.google.com/recaptcha/api.js'></script>";
}

Теперь на странице регистрации будет включена reCAPTCHA:

Шаг 3: Проверка CAPTCHA

Если проверка пройдёт успешно, то в форму будет добавлен новый параметр g-recaptcha-response. Далее внутри функции do_register_user, мы можем проверить данное значение.

Для начала напишем функцию проверки параметра reCAPTCHA:

/**
 * Проверка правильности параметра reCAPTCHA
 *
 * @return bool True если CAPTCHA введена, в обратном случае false.
 */
private function verify_recaptcha() {
    // Данное поле будет задано recaptcha-ей если проверка была успешной
    if ( isset ( $_POST['g-recaptcha-response'] ) ) {
        $captcha_response = $_POST['g-recaptcha-response'];
    } else {
        return false;
    }

    // Проверка ответа от Google
    $response = wp_remote_post(
        'https://www.google.com/recaptcha/api/siteverify',
        array(
            'body' => array(
                'secret' => get_option( 'personalize-login-recaptcha-secret-key' ),
                'response' => $captcha_response
            )
        )
    );

    $success = false;
    if ( $response && is_array( $response ) ) {
        $decoded_response = json_decode( $response['body'] );
        $success = $decoded_response->success;
    }

    return $success;
}

На строках 9-13 функция принимает ответ от reCAPTCHA. Если его нет, то пользователь не нажал на кнопку.

На строках 16-24 мы задействуем функцию wp_remote_post для отправки POST запроса на сервер reCAPTCHA и проверки ответа. Нам необходимо передать два параметра: секретный ключ reCAPTCHA и значение g-recaptcha-response.

Ответ будет получен в формате JSON. Его нужно преобразовать в массив и осуществить проверку результата (строка 29).

Далее давайте воспользуемся функцией handle_register_request для включения reCAPTCHA в общую валидацию формы:

if ( ! get_option( 'users_can_register' ) ) {
    // Регистрация закрыта. Показать ошибку
    $redirect_url = add_query_arg( 'register-errors', 'closed', $redirect_url );
} elseif ( ! $this->verify_recaptcha() ) {
    // Проверка Recaptcha провалилась, показать ошибку
    $redirect_url = add_query_arg( 'register-errors', 'captcha', $redirect_url );
} else {
    $email = $_POST['email'];
    $first_name = sanitize_text_field( $_POST['first_name'] );
    $last_name = sanitize_text_field( $_POST['last_name'] );

    $result = $this->register_user( $email, $first_name, $last_name );

    if ( is_wp_error( $result ) ) {
        $errors = join( ',', $result->get_error_codes() );
        $redirect_url = add_query_arg( 'register-errors', $errors, $redirect_url );
    } else {
        $redirect_url = home_url( 'member-login' );
        $redirect_url = add_query_arg( 'registered', $email, $redirect_url );
    }
}

Если проверка reCAPTCHA провалится, то пользователь увидит страницу регистрации с ошибкой, переданной в captcha.

Для отображения ошибки добавьте сообщение в функцию get_error_message:

case 'captcha':
    return __( 'The Google reCAPTCHA check failed. Are you a robot?', 'personalize-login' );

Вот и всё. Мы добавили поле reCAPTCHA, которое увеличит надёжность нашей защиты от спама.

Что дальше?

Мы успешно подогнали процесс регистрации пользователей под себя. Далее всё зависит от вас и ваших нужд: можете добавить другие поля, осуществить включение нового пользователя в рассылку и так далее.

В следующем уроке мы реализуем функционал "Забыли пароль?".

А до того, приятного кодинга.

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: http://code.tutsplus.com/tutorials/build-a-custom-wordpress-user-flow-part-2-new-user-registration--cms-23810
Перевел: Станислав Протасевич
Урок создан: 8 Сентября 2015
Просмотров: 14506
Правила перепечатки


5 последних уроков рубрики "Wordpress"

или авторизуйтесь, чтобы добавлять комментарии, оценивать уроки и сохранять их в личном кабинете
  • 28 Февраля 2016 12:10
    Max_Nika
    Ребят, а перевод третьей части серии уроков планируется? "В следующем уроке мы реализуем функционал "Забыли пароль?" На сайте-источнике есть на анг. статья) Спасибо!
  • 17 Июня 2016 20:44
    egmalt
    Продолжение было бы круто
^ Наверх ^