Как предварительно заполнить поля имени пользователя / пароля на странице входа

8

Для демонстрационной среды я хотел бы предварительно заполнить поля имени пользователя и пароля формы wp-login соответственно строкой «demo» и «demo».

Таким образом, пользователям просто нужно нажать на кнопку «Войти», чтобы подключиться к административной области.

Есть способ сделать это? Может с крючком?

Спасибо за ваши советы

Жиль Вауварин
источник

Ответы:

6

Результат

введите описание изображения здесь

имя пользователя

Вы можете объявить значение поля формы глобальным и предварительно заполнить его.

Это переопределит любую настройку, выполненную через флажок «Запомнить меня».

/**
 * Changes the default user name to "DEMO"
 * 
 * @return string $user_login
 */
function login_form_username()
{
    global $user_login;
    return $user_login = 'DEMO';
}
add_action( 'login_head', 'login_form_username' );

пароль

Я не нашел ничего, что вы можете использовать, чтобы заполнить его, поэтому я бы добавил примечание. К счастью / к сожалению, есть целый набор таблиц стилей для интерфейса администратора. Так что .wrapв связи с h2дает приятный стиль. Функция подключена к крюку дополнительных полей для администратора. Приоритет - 0установить его над дополнительными полями.

/**
 * Adds a note beyond the user login name & password field
 * 
 * @return string
 */
function login_form_note()
{
    print '<div class="wrap"><h2 style="text-align: center;">The Password is "DEMO"</h2></div>';
}
add_action( 'login_form', 'login_form_note', 0 );

Безопасность: скрыть ошибки

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

/**
 * Hide wrong login names
 * 
 * @return string
 */
function no_login_error() 
{
    return __( 'Wrong Credentials.' );
}
add_filter( 'login_errors', 'no_login_error' );

Другие фильтры

Ноты:

  • Если вы хотите заменить другие вещи, такие как стили, то вы можете использовать login_enqueue_scriptsкрючок.
  • Вы также можете заменить ссылку за логотипом, используя login_headerurlфильтр, который фильтрует URL. Ссылка titleможет быть заменена с помощью login_headertitle. Оба запускают как для нескольких сайтов, так и для одного сайта.
  • Сообщение для входа в систему можно изменить с помощью login_messageфильтра.
кайзер
источник
6

Вы можете использовать этот код для автоматического входа пользователя в систему:

add_action('init', 'auto_login');
add_action('admin_init', 'auto_login');
function auto_login() {
    if (!is_user_logged_in()) {
      //by user name
      $user = get_user_by( 'login', 'demo' );
      //Or by user id, 2 being the ID of the demo user
      //$user = get_userdata(2);
      wp_set_current_user($user->ID, $user->user_login);
      wp_set_auth_cookie($user->ID);
      do_action('wp_login', $user->user_login);
    }
}
Bainternet
источник
Было бы еще круче, если бы вы не брали идентификатор, а вместо этого получали имя пользователя. +1 в любом случае.
Кайзер
2
Вы можете! get_user_by( 'login', 'demo' );
SickHippie
1
Разве initкрюк не будет достаточно? Он присутствует везде ...
Кайзер
3

Вот 3 способа сделать это:

Первый способ - использовать хук wp_signon.

$creds = array();    
$creds['user_login'] = 'example';   
$creds['user_password'] = 'plaintextpw';   
$creds['remember'] = true;   
$user = wp_signon( $creds, false );  
if ( is_wp_error($user) ) {  
   echo $user->get_error_message();
}

Второй способ - использовать jQuery .val()и добавить его на страницу входа.

$("#user_login").val('username');    
$("#user_pass").val('password');

Последний способ - отредактировать ваш wp-login.phpфайл (обратите внимание, это не рекомендуется, хотя это будет работать).

Брук.
источник
1) потребуется замена для всего файла wp-login.php - как бы вы это сделали (серьезный вопрос - мне интересно)? Переписать правила так, чтобы вместо этого запускался ваш шаблон? 2) допустимо, но потребуется jQuery и будет заключено в jQuery( document ).ready( function( $ )вызов, чтобы сделать его $доступным, и функция будет работать. Вам также нужно будет позвонить jQueryтолько для этого. 3) Хорошо, хорошо ... Давайте просто ничего не будем говорить об этом :)
kaiser
1) Я не уверен, я в основном мозговой штурм никогда не делал это. что касается 2), похоже, jquery уже загружен на моей странице входа. Я также ленился и не оборачивал свой пример в jQuery(document...теги. 3) Такого не было.
Брук.