Comment préremplir les champs de nom d'utilisateur / mot de passe sur la page de connexion


8

Pour un environnement de démonstration, je voudrais pré-remplir les champs de nom d'utilisateur et de mot de passe du formulaire wp-login avec respectivement la chaîne "demo" et "demo".

Ainsi, les utilisateurs n'auront qu'à cliquer sur le bouton "Connexion" pour se connecter à la zone d'administration.

Il y a une façon de faire cela ? Peut-être avec un crochet?

Merci pour vos conseils

Réponses:


6

Le résultat

entrez la description de l'image ici

Nom d'utilisateur

Vous pouvez déclarer la valeur du champ de formulaire global et le préremplir.

Cela annulera tout paramètre effectué via la case à cocher "Se souvenir de moi".

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

Mot de passe

Je n'ai rien trouvé que vous puissiez utiliser pour le préremplir, alors j'ajouterais une note. Heureusement / Malheureusement, l'ensemble des feuilles de style pour l'interface d'administration est disponible. Donc .wrapen rapport avec h2donne un joli style. La fonction est liée au crochet des champs supplémentaires pour le crochet d'administration. La priorité est 0de le placer au-dessus des champs supplémentaires.

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

Sécurité: masquer les erreurs

Comme quelqu'un obtiendrait une preuve visuelle qu'il a entré un nom d'utilisateur existant par défaut, j'ajouterais ce qui suit à votre fichier functions.php, pour éviter de dire si le nom d'utilisateur a été deviné correctement:

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

Autres filtres

Remarques:

  • Si vous souhaitez remplacer d'autres éléments comme les styles, vous pouvez utiliser le login_enqueue_scriptscrochet.
  • Vous pouvez également remplacer le lien derrière le logo en utilisant le login_headerurlfiltre qui filtre l'url. Le lien titlepeut être remplacé à l'aide de login_headertitle. Les deux déclenchent des configurations multisites et un site unique.
  • Le message de connexion peut être modifié à l'aide du login_messagefiltre.

6

vous pouvez utiliser ce code pour vous connecter automatiquement à l'utilisateur:

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

Ce serait encore plus cool si vous ne preniez pas l'ID, mais obtenez plutôt l'utilisateur par son nom. +1 de toute façon.
kaiser

2
Vous pouvez! get_user_by( 'login', 'demo' );
SickHippie

1
Le initcrochet ne suffirait-il pas? Il est présent partout ...
kaiser

3

Voici 3 façons de procéder:

La première consiste à utiliser le crochet 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 deuxième façon est d'utiliser jQuery .val()et de l'ajouter à votre page de connexion

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

La dernière façon est de modifier votre wp-login.phpfichier (notez que ce n'est pas recommandé même si cela fonctionnerait).


1) aurait besoin d'un remplacement pour l'ensemble du fichier wp-login.php - Comment feriez-vous cela (Q sérieux - je suis intéressé)? Réécrire les règles pour que votre modèle soit déclenché à la place? 2) est valide, mais nécessiterait jQuery et serait enveloppé dans un jQuery( document ).ready( function( $ )appel pour être $disponible et la fonction fonctionner. Vous devez également appeler jQueryuniquement pour cela. 3) Ok, eh bien ... Disons simplement rien à ce sujet :)
kaiser

1) Je ne suis pas sûr, je faisais surtout du brainstorming jamais fait. quant à 2) il semble que jquery soit déjà chargé dans ma page de connexion. J'étais aussi paresseux et je n'emballais pas mon exemple dans des jQuery(document...balises. 3) Cela ne s'est jamais produit.
Brooke.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.