web-dev-qa-db-fra.com

Comment personnaliser wp-login.php uniquement pour les utilisateurs qui définissent un mot de passe pour la première fois?

En tant qu'administrateur, si je crée un nouvel utilisateur, je peux choisir d'envoyer par courrier électronique un lien sur lequel ils cliquent pour accéder à wp-login.php, où ils sont invités à définir leur mot de passe pour la première fois. (Wordpress envoyait un mot de passe par courrier électronique, mais je comprends pourquoi ils ont changé cela!)

Les utilisateurs arrivent sur wp-login, qui enregistre le nom d'utilisateur dans un champ masqué et affiche un mot de passe suggéré qu'ils peuvent personnaliser.

Cela confond certains de mes utilisateurs les plus difficiles à comprendre. Ils trouvent le mot de passe généré incompréhensible et ne comprennent pas qu'ils peuvent cliquer sur le mot de passe suggéré dans la zone et le remplacer par un élément dont ils peuvent se souvenir. J'aimerais ajouter un texte d'aide et peut-être sélectionner automatiquement le mot de passe suggéré également à ce stade.

Je ne suis pas sûr des points qui me permettront d'effectuer des tâches qui uniquement apparaissent pour les utilisateurs qui définissent leur mot de passe, et non pour quiconque se connectant.

Comment puis je faire ça?

3
Victoria

Vous pouvez ajouter une boîte de message d’aide supplémentaire sur l’écran réinitialiser le mot de passe :

help text

avec ce qui suit:

 /**
  * Display an extra help message box on the 'reset password' screen
  * 
  * @link http://wordpress.stackexchange.com/a/204429/26350
  */
 add_action( 'validate_password_reset', function( $errors )
 {
    add_action( 'login_message', function( $message )
    {
        // Modify this help message box to your needs:
        $mybox = sprintf( 
            '<br/><p class="message reset-pass">%s</p>',
            __( 'Some help text here!' )
        );

        return $message . $mybox; 
    } );
 } );

Ici, nous ajoutons la boîte de message supplémentaire en utilisant le filtre login_message. Il ne devrait apparaître que sur l'écran réinitialiser le mot de passe , car nous l'associons à l'action validate_password_reset.

2
birgire

J'ai fini par utiliser ceci. C'est définitivement un bidouillage ... si quelqu'un d'autre sait comment mieux modifier ce qui se passe dans wp-admin/js/user-profile.js sans pirater le coeur , s'il vous plaît, faites-moi savoir. Je ne veux pas désenregistrer tout le script car j'aime bien la vérification de la force du mot de passe, etc.

// add some js to the login page
function squarecandy_login_stylesheet() {
    wp_enqueue_script( 'custom-login-js', get_stylesheet_directory_uri() . '/js/login.js' );
}
add_action( 'login_enqueue_scripts', 'squarecandy_login_stylesheet' );

login.js

jQuery(document).ready(function($){
  // wait half a second so WP can fill the suggestion first
  setTimeout( function(){
    // Switch to the non-visible entry mode
    $('.wp-hide-pw').click();
    // clear the password fields, put the cursor in the field
    $('#pass1, #pass1-text').val('').focus();
  }, 500 );
});
0
squarecandy