WordPress как на ладони
Наставник Трепачёв Д.П., phphtml.net wordpress jino

wp_login_form() WP 3.0.0

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

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

Выводит на экран 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;
	}
}

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

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

<form id="registerform" action="http://wptest.ru/wp/wp-login.php?action=register" 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>

Код wp login form: wp-includes/general-template.php WP 4.8.1

<?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;
}

Cвязанные функции

Из раздела: Вход/выход

Ремонт видеокамер panasonic в москве можно заказать

ремонт видеокамер panasonic в москве можно заказать

sscservice.ru

wp_login_form 11 комментариев
Полезные 2 Вопросы 1 Все
  • Евгений cайт: itskill.ru
    @

    Поскажите, куда необходимо вставить этот php код, чтобы форма появилась на конкретной странице сайта?

    -2
    Ответить3.6 года назад #
    • Kama4472

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

      Допустим, если вставите в файл темы "sidebar.php" (в конец), то форма должна появится в конце боковой панели.

      Ответить3.6 года назад #
  • Евгений
    @

    Ок попробуем еще раз smile
    Куда надо вставить php код, чтобы форма появилась на конкретной СТРАНИЦЕ сайта (pages, или статические страницы в терминологии wp. )
    Есть подобный функционал в принципе, или обязательно использовать short-codes ?

    Ответить3.6 года назад #
    • Kama4472

      Откройте файл этой страницы и вставьте до или после вывода контента функция the_content() код:

      <?php wp_login_form( $args ); ?>

      Шоткод тут будет лишним, я думаю. Вам же не нужно будет постоянно использовать его...

      1
      Ответить3.6 года назад #
  • Виктор

    Здравствуйте! Подскажите пожалуйста, как сделать так, чтобы после авторизации форма пропадала!?

    Ответить2.7 года назад #
    • Виктор

      Разобрался!
      Так гораздо проще мне кажетсяsmile

      <?php if ( ! is_user_logged_in() ) : ?>
      			<h3 class="widget-title">Войти</h3>
      			<?php wp_login_form( array('echo' => true) );
      			// Ссылки на регистрацию и случай, если пароль утерян: ?>
      
      			<?php wp_register(); ?>
      			<li><a href="<?php echo wp_lostpassword_url(); ?>"><?php _e('Lost Password'); ?></a></li>
      			</ul>
      		<?php endif; ?>
      1
      Ответить2.7 года назад #
  • asmi046

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

    6
    Ответить2.4 года назад #
    • Egor

      Вот здесь нашел решение

      add_action( 'wp_login_failed', 'my_front_end_login_fail' );  // hook failed login
      
      function my_front_end_login_fail( $username ) {
         $referrer = $_SERVER['HTTP_REFERER'];  // where did the post submission come from?
         // if there's a valid referrer, and it's not the default log-in screen
         if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') ) {
      	  wp_redirect( $referrer . '?login=failed' );  // let's append some information (login=failed) to the URL for the theme to use
      	  exit;
         }
      }
      1
  • Доброго времени суток, а как вывести форму регистрации?

    2
    • Kama4472

      HTML кодом, спец функции нет. Код будет примерно такой:

      <form id="registerform" action="http://wptest.ru/wp/wp-login.php?action=register" 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 дня назад #
  • Галина

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

    Пробовала использовать фильтр login_errors,

    function true_change_default_login_errors(){
    return '<div id="login-error">Ошибка при вводе логина или пароля</div>';
    }
    
    add_filter( 'login_errors', 'true_change_default_login_errors' );

    но он изменяет сообщение только на стандартной странице авторизации wp-login.php.

    Ответить14 дней назад #

Здравствуйте, !

Ваш комментарий