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(
'';
if ( $args['echo'] ) {
echo $form;
} else {
return $form;
}
}
Теперь вы знаете, как использовать функцию wp_login_form() в WordPress, настраивать её и создавать собственные формы логина и регистрации!