wp_login_form

Выводит HTML код формы авторизации (входа).

Хуки из функции:
login_form_bottom
login_form_defaults
login_form_middle
login_form_top
Возвращает

Выводит на экран HTML код формы авторизации. Если указать параметр echo=0, то результат будет возвращен для дальнейшей обработки.

Использование

<?php wp_login_form( $args ); ?>

Шаблон использования

$args = array(
	'echo'           => true,
	'redirect'       => site_url( $_SERVER['REQUEST_URI'] ), 
	'form_id'        => 'loginform',
	'label_username' => __( 'Username' ),
	'label_password' => __( 'Password' ),
	'label_remember' => __( 'Remember Me' ),
	'label_log_in'   => __( 'Log In' ),
	'id_username'    => 'user_login',
	'id_password'    => 'user_pass',
	'id_remember'    => 'rememberme',
	'id_submit'      => 'wp-submit',
	'remember'       => true,
	'value_username' => NULL,
	'value_remember' => false 
);
wp_login_form( $args );
$args(строка/массив)
Массив аргументов, контролирующих результат.
По умолчанию: параметры по умолчанию

Аргументы параметра $args

echo(логический)
Вывести на экран (1) или возвратить (0).
По умолчанию: 1
redirect(строка)
УРЛ на который перекинет после авторизации.
По умолчанию: текущая страница
form_id(строка)
id атрибут тега <form id="loginform">.
По умолчанию: ‘loginform’
label_username(строка)
Текст заголовка поля “имя пользователя”.
По умолчанию: ‘__( ‘Username’ )’
label_password(строка)
Текст заголовка поля “пароль”.
По умолчанию: ‘__( ‘Password’ )’
label_remember(строка)
Текст заголовка поля “запомнить меня”.
По умолчанию: ‘__( ‘Remember Me’ )’
label_log_in(строка)
Текст кнопки сабмита.
По умолчанию: ‘__( ‘Log In’ )’
id_username(строка)
Значение атрибута id: <input id="user_login" />
По умолчанию: ‘user_login’
id_password(строка)
Значение атрибута id: <input id="user_login" />
По умолчанию: ‘user_pass’
id_remember(строка)
Значение атрибута id: <input id="user_login" />
По умолчанию: ‘rememberme’
id_submit(строка)
Значение атрибута id: <input id="user_login" />
По умолчанию: ‘wp-submit’
remember(логический)
Запомнить значения полей (1) или нет (0).
По умолчанию: 1
value_username(строка)
Имя пользователя по умолчанию.
По умолчанию: ”
value_remember(строка)
Значение атрибута value, поля “запомнить меня”. По умолчанию 1 – галочка отмечена. 0 – галочка снята.
По умолчанию: 1

Примеры

#1. Обычное отображение формы:

<?php wp_login_form(); ?>

Выведет на экран:

<form name="loginform" id="loginform" action="http://wp-kama.ru/wp-login.php" method="post">

	<p class="login-username">
		<label for="user_login">Логин</label>

		<input type="text" name="log" id="user_login" class="input" value="" size="20" tabindex="10" />
	</p>
	<p class="login-password">
		<label for="user_pass">Пароль</label>
		<input type="password" name="pwd" id="user_pass" class="input" value="" size="20" tabindex="20" />
	</p>

	<p class="login-remember"><label><input name="rememberme" type="checkbox" id="rememberme" value="forever" tabindex="90" /> Запомнить меня</label></p>

	<p class="login-submit">
		<input type="submit" name="wp-submit" id="wp-submit" class="button-primary" value="Войти" tabindex="100" />
		<input type="hidden" name="redirect_to" value="http://wp-kama.ru/s" />
	</p>

</form>

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

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

Чтобы это изменить и оставить пользователя на прежней странице, даже если он ввел неверные данные, можно использовать хук wp_login_failed:

## Оставляет пользователя на той же странице при вводе неверного логина/пароля в форме авторизации wp_login_form()
add_action( 'wp_login_failed', 'my_front_end_login_fail' );
function my_front_end_login_fail( $username ) {
	$referrer = $_SERVER['HTTP_REFERER'];  // откуда пришел запрос

	// Если есть referrer и это не страница 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;
	}
}

Код из


wp-includes/general-template.php

WP 4.7.2

<?php
function wp_login_form( $args = array() ) {
	$defaults = array(
		'echo' => true,
		// Default 'redirect' value takes the user back to the request URI.
		'redirect' => ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],
		'form_id' => 'loginform',
		'label_username' => __( 'Username or Email Address' ),
		'label_password' => __( 'Password' ),
		'label_remember' => __( 'Remember Me' ),
		'label_log_in' => __( 'Log In' ),
		'id_username' => 'user_login',
		'id_password' => 'user_pass',
		'id_remember' => 'rememberme',
		'id_submit' => 'wp-submit',
		'remember' => true,
		'value_username' => '',
		// Set 'value_remember' to true to default the "Remember me" checkbox to checked.
		'value_remember' => false,
	);

	/**
	 * Filters the default login form output arguments.
	 *
	 * @since 3.0.0
	 *
	 * @see wp_login_form()
	 *
	 * @param array $defaults An array of default login form arguments.
	 */
	$args = wp_parse_args( $args, apply_filters( 'login_form_defaults', $defaults ) );

	/**
	 * Filters content to display at the top of the login form.
	 *
	 * The filter evaluates just following the opening form tag element.
	 *
	 * @since 3.0.0
	 *
	 * @param string $content Content to display. Default empty.
	 * @param array  $args    Array of login form arguments.
	 */
	$login_form_top = apply_filters( 'login_form_top', '', $args );

	/**
	 * Filters content to display in the middle of the login form.
	 *
	 * The filter evaluates just following the location where the 'login-password'
	 * field is displayed.
	 *
	 * @since 3.0.0
	 *
	 * @param string $content Content to display. Default empty.
	 * @param array  $args    Array of login form arguments.
	 */
	$login_form_middle = apply_filters( 'login_form_middle', '', $args );

	/**
	 * Filters content to display at the bottom of the login form.
	 *
	 * The filter evaluates just preceding the closing form tag element.
	 *
	 * @since 3.0.0
	 *
	 * @param string $content Content to display. Default empty.
	 * @param array  $args    Array of login form arguments.
	 */
	$login_form_bottom = apply_filters( 'login_form_bottom', '', $args );

	$form = '
		<form name="' . $args['form_id'] . '" id="' . $args['form_id'] . '" action="' . esc_url( site_url( 'wp-login.php', 'login_post' ) ) . '" method="post">
			' . $login_form_top . '
			<p class="login-username">
				<label for="' . esc_attr( $args['id_username'] ) . '">' . esc_html( $args['label_username'] ) . '</label>
				<input type="text" name="log" id="' . esc_attr( $args['id_username'] ) . '" class="input" value="' . esc_attr( $args['value_username'] ) . '" size="20" />
			</p>
			<p class="login-password">
				<label for="' . esc_attr( $args['id_password'] ) . '">' . esc_html( $args['label_password'] ) . '</label>
				<input type="password" name="pwd" id="' . esc_attr( $args['id_password'] ) . '" class="input" value="" size="20" />
			</p>
			' . $login_form_middle . '
			' . ( $args['remember'] ? '<p class="login-remember"><label><input name="rememberme" type="checkbox" id="' . esc_attr( $args['id_remember'] ) . '" value="forever"' . ( $args['value_remember'] ? ' checked="checked"' : '' ) . ' /> ' . esc_html( $args['label_remember'] ) . '</label></p>' : '' ) . '
			<p class="login-submit">
				<input type="submit" name="wp-submit" id="' . esc_attr( $args['id_submit'] ) . '" class="button button-primary" value="' . esc_attr( $args['label_log_in'] ) . '" />
				<input type="hidden" name="redirect_to" value="' . esc_url( $args['redirect'] ) . '" />
			</p>
			' . $login_form_bottom . '
		</form>';

	if ( $args['echo'] )
		echo $form;
	else
		return $form;
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *