Функция wp_login_form() в WordPress: настройка формы логина

WP_LOGIN_FORM() │ WP 3.0.0

Функция wp_login_form() предоставляет простой интерфейс для создания формы логина в WordPress. Вы можете использовать эту форму в любом месте сайта.

По умолчанию HTML-код формы выводится на экран. Чтобы вернуть его, вместо этого передайте значение false для параметра $echo.

Хуки функции

  • login_form_defaults: позволяет изменить настройки по умолчанию для формы.
  • login_form_top: контент, отображаемый в начале формы.
  • login_form_middle: контент, отображаемый в середине формы.
  • login_form_bottom: контент, отображаемый в конце формы.

Возврат

Функция возвращает либо null, если параметр echo равен true, либо HTML-код формы, если echo равен false.

Применение

wp_login_form( $args );

Параметры

$args (массив) — массив опций для настройки вывода формы.

По умолчанию: пустой массив

  • echo (true|false): определяет, показывать форму на экране или возвращать HTML-код формы. По умолчанию: true.
  • redirect (строка): URL для перенаправления после входа в систему. Должен быть абсолютным, как в https://example.com/mypage/. По умолчанию: перенаправляет обратно на запрашиваемый URI.
  • form_id (строка): значение атрибута ID для формы. По умолчанию: 'loginform'.
  • label_username (строка): надпись для поля имени пользователя или электронной почты. По умолчанию: 'Имя пользователя или адрес электронной почты'.
  • label_password (строка): надпись для поля пароля. По умолчанию: 'Пароль'.
  • label_remember (строка): надпись для поля "Запомнить меня". По умолчанию: 'Запомнить меня'.
  • label_log_in (строка): надпись для кнопки входа. По умолчанию: 'Войти'.
  • id_username (строка): значение атрибута ID для поля имени пользователя. По умолчанию: 'user_login'.
  • id_password (строка): значение атрибута ID для поля пароля. По умолчанию: 'user_pass'.
  • id_remember (строка): значение атрибута ID для поля "Запомнить меня". По умолчанию: 'rememberme'.
  • id_submit (строка): значение атрибута ID для кнопки отправки. По умолчанию: 'wp-submit'.
  • remember (true|false): определяет, показывать ли чекбокс "Запомнить меня" в форме.
  • value_username (строка): значение по умолчанию для поля имени пользователя. По умолчанию: ''.
  • value_remember (true|false): должен ли чекбокс "Запомнить меня" быть отмечен по умолчанию. По умолчанию: false.
  • required_username (true|false): обязательно ли поле имени пользователя. По умолчанию: false.
  • required_password (true|false): обязательно ли поле пароля. По умолчанию: false.

Примеры

Пример 1: Вывод формы логина

Этот код отображает форму логина на экране:

Пример 2: Оставаться на той же странице при неверном логине/пароле

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

// Оставляет пользователя на той же странице, если введен неверный логин/пароль
add_action( 'wp_login_failed', 'my_front_end_login_fail' );

function my_front_end_login_fail( $username ) {
    $referrer = $_SERVER['HTTP_REFERER']; // откуда был запрос
    // Если есть реферер и это не страница wp-login.php
    if( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') ) {
        wp_redirect( add_query_arg('login', 'failed', $referrer ) ); // перенаправление с добавлением ?login=failed
        exit;
    }
}

Пример 3: Форма регистрации

В WordPress нет специальной функции для вывода формы регистрации. Поэтому вам нужно создать её самостоятельно. Вот пример HTML-кода формы регистрации:

Подтверждение регистрации будет отправлено на вашу почту.


Пример 4: Отключение проверки электронной почты администратора

Иногда проверка электронной почты администратора может вызывать проблемы с входом. Чтобы отключить это, используйте следующий код:

// Отключает проверку электронной почты администратора
add_filter( 'admin_email_check_interval', '__return_false' );

Пример 5: Отображение формы логина как шорткода

Вы можете создать шорткод для отображения формы логина. Вот как это сделать:

add_shortcode( 'wpdocs_log_me', 'wpdocs_log_me_shortcode_fn' );

function wpdocs_log_me_shortcode_fn() {
    $args = array(
        'echo'            => false,
        'redirect'        => get_permalink( get_the_ID() ),
        'remember'        => true,
        'value_remember'  => true,
    );

    return wp_login_form( $args );
}

Изменения

С версии 3.0.0 — введена функция. С версии 6.6.0 — добавлены аргументы required_username и required_password.

Основной код функции wp_login_form()

function wp_login_form( $args = array() ) {
    $defaults = array(
        'echo'              => true,
        'redirect'          => ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],
        'form_id'           => 'loginform',
        'label_username'    => __( 'Имя пользователя или адрес электронной почты' ),
        'label_password'    => __( 'Пароль' ),
        'label_remember'    => __( 'Запомнить меня' ),
        'label_log_in'      => __( 'Войти' ),
        'id_username'       => 'user_login',
        'id_password'       => 'user_pass',
        'id_remember'       => 'rememberme',
        'id_submit'         => 'wp-submit',
        'remember'          => true,
        'value_username'    => '',
        'value_remember'    => false,
        'required_username' => false,
        'required_password' => false,
    );

    $args = wp_parse_args( $args, apply_filters( 'login_form_defaults', $defaults ) );
    $login_form_top = apply_filters( 'login_form_top', '', $args );
    $login_form_middle = apply_filters( 'login_form_middle', '', $args );
    $login_form_bottom = apply_filters( 'login_form_bottom', '', $args );

    $form =
        sprintf(
            '
', esc_attr( $args['form_id'] ), esc_url( site_url( 'wp-login.php', 'login_post' ) ) ) . $login_form_top . sprintf( '', esc_attr( $args['id_username'] ), esc_html( $args['label_username'] ), esc_attr( $args['value_username'] ), ( $args['required_username'] ? ' required="required"' : '' ) ) . sprintf( '', esc_attr( $args['id_password'] ), esc_html( $args['label_password'] ), ( $args['required_password'] ? ' required="required"' : '' ) ) . $login_form_middle . ( $args['remember'] ? sprintf( '', esc_attr( $args['id_remember'] ), ( $args['value_remember'] ? ' checked="checked"' : '' ), esc_html( $args['label_remember'] ) ) : '' ) . sprintf( '', esc_attr( $args['id_submit'] ), esc_attr( $args['label_log_in'] ), esc_url( $args['redirect'] ) ) . $login_form_bottom . '
'; if ( $args['echo'] ) { echo $form; } else { return $form; } }

Теперь вы знаете, как использовать функцию wp_login_form() в WordPress, настраивать её и создавать собственные формы логина и регистрации!

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *