Come precompilare i campi nome utente / password nella pagina di accesso


8

Per un ambiente demo, vorrei precompilare i campi nome utente e password del modulo di accesso wp con rispettivamente la stringa "demo" e "demo".

Pertanto, gli utenti dovranno semplicemente fare clic sul pulsante "Accedi" per connettersi all'area di amministrazione.

C'è un modo per farlo? Forse con un gancio?

Grazie per i tuoi consigli

Risposte:


6

Il risultato

inserisci qui la descrizione dell'immagine

Nome utente

È possibile dichiarare il valore del campo modulo globale e precompilarlo.

Ciò sostituirà qualsiasi impostazione effettuata tramite la casella di controllo "Ricordami".

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

Parola d'ordine

Non ho trovato nulla che puoi usare per precompilarlo, quindi aggiungerei una nota. Volentieri / Purtroppo, è disponibile l'intera serie di fogli di stile per l'interfaccia utente dell'amministratore. Quindi .wrapin connessione con h2dà uno stile piacevole. La funzione è agganciata al gancio campi aggiuntivi per il gancio di amministrazione. La priorità è 0impostarlo sopra campi aggiuntivi.

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

Sicurezza: nascondi errori

Dato che qualcuno otterrebbe una prova visiva che ha inserito un nome utente esistente per impostazione predefinita, aggiungerei quanto segue al tuo file Functions.php, per evitare di dire se il nome utente è stato indovinato correttamente:

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

Altri filtri

Appunti:

  • Se vuoi sostituire altre cose come gli stili, puoi usare il login_enqueue_scriptsgancio.
  • Puoi anche sostituire il link dietro il logo usando il login_headerurlfiltro che filtra l'URL. Il collegamento titlepuò essere sostituito utilizzando login_headertitle. Entrambi attivano per configurazioni multisito e un singolo sito.
  • Il messaggio di accesso può essere modificato utilizzando il login_messagefiltro.

6

potresti usare questo codice per accedere automaticamente all'utente:

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

Sarebbe ancora più interessante se non si prendesse l'ID, ma invece si ottenga l'utente per nome. +1 comunque.
Kaiser

2
Puoi! get_user_by( 'login', 'demo' );
SickHippie,

1
L' initamo non sarebbe abbastanza? È presente ovunque ...
Kaiser

3

Ecco 3 modi per farlo:

Il primo modo è utilizzare l' hook 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();
}

Il secondo modo è usare jQuery .val()e aggiungerlo alla tua pagina di accesso

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

L'ultimo modo è quello di modificare il tuo wp-login.phpfile (Nota, questo non è raccomandato sebbene funzionerebbe).


1) avrebbe bisogno di una sostituzione per l'intero file wp-login.php - Come lo faresti (Q serio - Sono interessato)? Riscrivi le regole in modo che il tuo modello venga attivato invece? 2) è valido, ma avrebbe bisogno di jQuery e verrà inserito in una jQuery( document ).ready( function( $ )chiamata per renderlo $disponibile e la funzione funzionerà. Dovresti anche chiamare jQuerysolo per questo. 3) Ok, beh ... Diciamo solo nulla :)
Kaiser

1) Non sono sicuro, per lo più ero un assalto cerebrale mai fatto. come per 2) sembra che jquery sia già caricato nella mia pagina di accesso. Ero anche pigro e non avvolgevo il mio esempio nei jQuery(document...tag. 3) Non è mai successo.
Brooke.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.