Cómo rellenar previamente los campos de nombre de usuario / contraseña en la página de inicio de sesión

8

Para un entorno de demostración, me gustaría completar previamente los campos de nombre de usuario y contraseña del formulario de inicio de sesión de wp con la cadena "demo" y "demo" respectivamente.

Por lo tanto, los usuarios solo tendrán que hacer clic en el botón "Iniciar sesión" para conectarse al área de administración.

Hay una manera de hacer eso ? Tal vez con un gancho?

Gracias por sus consejos

Gilles Vauvarin
fuente

Respuestas:

6

El resultado

ingrese la descripción de la imagen aquí

Nombre de usuario

Puede declarar el valor del campo de formulario global y rellenarlo previamente.

Esto anulará cualquier configuración realizada a través de la casilla de verificación "Recordarme".

/**
 * 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' );

Contraseña

No encontré nada que puedas usar para rellenarlo, así que agregaría una nota. Con mucho gusto / tristemente hay disponible todo el conjunto de hojas de estilo para la interfaz de usuario de administrador. Entonces, .wrapen relación con h2da un bonito estilo. La función está conectada al enlace de campos adicionales para el enlace de administrador. La prioridad es 0establecerlo sobre campos adicionales.

/**
 * 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 );

Seguridad: Ocultar errores

Como alguien obtendría una prueba visual de que ingresó un nombre de usuario existente de forma predeterminada, agregaría lo siguiente a su archivo functions.php, para evitar saber si el nombre de usuario fue acertado:

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

Otros filtros

Notas:

  • Si desea reemplazar otras cosas como estilos, puede usar el login_enqueue_scriptsgancho.
  • También puede reemplazar el enlace detrás del logotipo utilizando el login_headerurlfiltro que filtra la url. El enlace titlese puede reemplazar usando login_headertitle. Ambos disparan para configuraciones de sitio múltiple y de sitio único.
  • El mensaje de inicio de sesión se puede cambiar usando el login_messagefiltro.
emperador
fuente
6

puede usar este código para iniciar sesión automáticamente en el usuario:

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
fuente
Sería aún más genial si no tomara la identificación, sino que obtuviera el nombre del usuario. +1 de todos modos.
kaiser
2
¡Usted puede! get_user_by( 'login', 'demo' );
SickHippie
1
¿No initsería suficiente el gancho? Está presente en todas partes ...
kaiser
3

Aquí hay 3 formas de hacerlo:

La primera forma es usar el gancho 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();
}

La segunda forma es usar jQuery .val()y agregarlo a su página de inicio de sesión

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

La última forma es editar su wp-login.phparchivo (Nota, esto no se recomienda aunque funcionaría).

Brooke
fuente
1) necesitaría un reemplazo para todo el archivo wp-login.php - ¿Cómo haría eso (P serio - Estoy interesado)? ¿Reescribir las reglas para que su plantilla se active en su lugar? 2) es válido, pero necesitaría jQuery y se incluirá en una jQuery( document ).ready( function( $ )llamada para que esté $disponible y la función funcione. También deberías llamar jQuerysolo por esto. 3) Ok, bueno ... No digamos nada al respecto :)
kaiser
1) No estoy seguro, la mayoría de las tormentas me hicieron nunca. en cuanto a 2) parece que jquery ya está cargado en mi página de inicio de sesión. También estaba siendo flojo y no envolvía mi ejemplo en jQuery(document...etiquetas. 3) Nunca sucedió.
Brooke