WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

wp_login_form()WP 3.0.0

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

Возвращает

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

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

wp_login_form( 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
) );

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

<?php 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

Примеры

0

#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>
0

#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;
	}
}
0

#3 Форма регистрации WordPress

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

<form id="registerform" action="<?= esc_url( wp_registration_url() ) ?>" method="post">
	<p>
		<label for="user_login">
			Имя пользователя<br>
			<input type="text" name="user_login" id="user_login" class="input" value="" size="20" style="">
		</label>
	</p>
	<p>
		<label for="user_email">
			E-mail<br>
			<input type="email" name="user_email" id="user_email" class="input" value="" size="25">
		</label>
	</p>

	<p id="reg_passmail">Подтверждение регистрации будет отправлено на ваш e-mail.</p>

	<br class="clear">
	<input type="hidden" name="redirect_to" value="">

	<p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="Регистрация"></p>
</form>

Список изменений

С версии 3.0.0 Введена.

Код wp_login_form() WP 6.4.3

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

	if ( $args['echo'] ) {
		echo $form;
	} else {
		return $form;
	}
}
27 комментариев
Полезные 3Вопросы 2 Все
    Войти