Пользовательская форма входа

20 янв. 2013 г., 21:37:33
Просмотры: 38K
Голосов: 10

Я совсем недавно начал работать с WordPress. Я пытаюсь отобразить форму входа в шапке моего сайта. Однако, когда я просматриваю все файлы в директории, это очень перегружает, и я боюсь что-либо трогать.

Кто-нибудь знает хорошие учебные материалы по этой теме или может пролить свет на этот вопрос?

0
Все ответы на вопрос 4
0
18

Форма входа представляет собой простую HTML-форму, которая отправляет имя пользователя и пароль на wp-login.php. Это самый простой способ создать пользовательскую форму входа:

<?php
$redirect_to = '';
?>
<form name="loginform" id="loginform" action="<?php echo site_url( '/wp-login.php' ); ?>" method="post">
<p>Имя пользователя: <input id="user_login" type="text" size="20" value="" name="log"></p>
<p>Пароль: <input id="user_pass" type="password" size="20" value="" name="pwd"></p>
<p><input id="rememberme" type="checkbox" value="forever" name="rememberme"> Запомнить меня</p>

<p><input id="wp-submit" type="submit" value="Войти" name="wp-submit"></p>

<input type="hidden" value="<?php echo esc_attr( $redirect_to ); ?>" name="redirect_to">
<input type="hidden" value="1" name="testcookie">
</form>

Построчное объяснение:

  • $redirect_to: Если вы хотите перенаправить пользователя на определенную страницу после входа, укажите URL здесь. Этот URL будет вставлен в скрытое поле в конце формы
  • <form ... action="...">: Данные должны отправляться на wp-login.php. Этот файл находится в корне вашей установки WordPress. Создайте правильный URL с помощью site_url() (подробнее о site_url() смотрите в кодексе). Метод должен быть установлен в post
  • Поле ввода для имени пользователя с id user_login
  • Поле ввода для пароля с id user_pass
  • Поле ввода для чекбокса "Запомнить меня" (необязательно)
  • Кнопка отправки формы
  • Скрытое поле для перенаправления пользователя после входа (необязательно)
  • Скрытое поле для тестовой куки (необязательно, но полезно)

Создайте форму и стилизуйте её с помощью CSS. Это всё, что требуется.

21 янв. 2013 г. 03:52:27
2
  1. Создайте файл шаблона в директории вашей дочерней темы, например, login.php. Разместите в этом файле форму входа:

    <form action="" method="post">
      <div>
        Имя пользователя: <input name="log" type="text" />
      </div>
      <div>
        Пароль: <input name="pwd" type="password" />
      </div>
      <div>
        <input type="submit" value="Войти" />
        <input type="hidden" name="action" value="my_login_action" />
      </div>
    </form>
    

    Измените что угодно, но оставьте атрибуты name без изменений

  2. Создайте файл functions.php в директории вашей дочерней темы или отредактируйте существующий. В нем вы будете обрабатывать запросы на вход:

    add_action('init', function(){
    
      // не запрос на вход?
      if(!isset($_POST['action']) || $_POST['action'] !== 'my_login_action')
        return;
    
      // см. кодекс для wp_signon()
      $result = wp_signon();
    
      if(is_wp_error($result))
        wp_die('Ошибка входа. Неправильное имя пользователя или пароль?');
    
      // перенаправляем обратно на запрошенную страницу после успешного входа    
      header('Location: ' . $_SERVER['REQUEST_URI']);
      exit;
    });
    
  3. Создайте копию вашего шаблона header.php, поместите ее в папку дочерней темы и отредактируйте. Добавьте этот код там, где должна появляться форма входа:

    <?php
    
     if(!is_user_logged_in()){
       get_template_part('login');
     }
    
    ?>
    
20 янв. 2013 г. 22:16:08
Комментарии

Мне очень нравится этот пример. Что мне нужно написать для аналогичной формы, но для регистрации, вместо $result = wp_signon();?

Andrei Cristian Prodan Andrei Cristian Prodan
31 мая 2013 г. 12:33:20

wp_create_user

onetrickpony onetrickpony
31 мая 2013 г. 13:11:59
0

Также вы можете настроить оригинальную форму входа в своей теме WordPress.

Есть несколько вещей, которые можно сделать. 1) Вы можете изменить логотип WordPress:

<?php
// Кастомный логотип
function my_custom_login_logo() {
    echo '<style type="text/css">
        h1 a { background-image:url('.get_bloginfo('template_url').'/images/logo.png) !important; }
    </style>';
}

add_action('login_head', 'my_custom_login_logo');

// Настройка ссылки логотипа

function my_login_logo_url() {
    return get_bloginfo( 'url' );
}
add_filter( 'login_headerurl', 'my_login_logo_url' );
function my_login_logo_url_title() {
    return '[url]';
}
add_filter( 'login_headertitle', 'my_login_logo_url_title' );

?>

2) Вы можете убрать тряску при ошибке входа:

<?php

function my_login_head() {
    remove_action('login_head', 'wp_shake_js', 12);
}
add_action('login_head', 'my_login_head');

?>

3) Удалить сообщения об ошибках входа:

<?php

add_filter('login_errors',create_function('$a', "return null;"));

?>

Важно: Не добавляйте все эти части кода в functions.php. Сначала создайте три отдельных файла с именами, описывающими функцию, например (my_custom_login_logo.php, my_login_head.php и remove_login_errors.php), а затем подключите эти 3 функции в functions.php Пример: require_once('includes/secure/my_custom_login_logo.php'); require_once('includes/secure/my_login_head.php'); require_once('includes/secure/remove_login_errors.php');

includes и secure - это папки. Надеюсь, это вам поможет. Добро пожаловать.

21 янв. 2013 г. 03:16:37
1

Добавление кодов в wp-login.php. Коды формы ниже.

    <form id="loginform" action="<?php echo site_url( '/wp-login.php' ); ?>" method="POST">

                            <h5><strong>ВХОД ДЛЯ УЧАСТНИКОВ</strong>  <a href="uyeol.html"><i class="fa fa-gear"></i> СОЗДАТЬ УЧЕТНУЮ ЗАПИСЬ.</a></h5>
                            <div class="newsletter-form">

                                <div class="newsletter-email">
                                    <input id="user_login" type="text" name="grs_tcno" value="" placeholder="Логин">
                                </div>

                                <div class="newsletter-zip">
                                    <input id="user_pass" type="password" name="grs_sifre" value="" placeholder="Пароль">
                                </div>

                                <div class="newsletter-submit">
                                    <input id="wp-submit" type="submit" name="girisyap" value="Войти">
                                    <input type="hidden" value="<?php echo esc_attr( $redirect_to ); ?>" name="redirect_to">
                                      <input type="hidden" value="1" name="testcookie">
                                    <i class="icons icon-right-thin"></i>
                                </div>

                            </div>
2 янв. 2019 г. 13:40:59
Комментарии

Никогда не стоит редактировать файлы ядра!

bueltge bueltge
2 янв. 2019 г. 15:37:46