web-dev-qa-db-fra.com

User_register peut-il générer le mot de passe?

J'essaie de générer en texte brut le mot de passe d'un utilisateur nouvellement créé en utilisant le hook user_register comme expliqué dans cette réponse . Cependant, en faisant un var_dump de $ _POST, je ne vois aucun mot de passe en sortie. User_register peut-il réellement faire cela?

Si non, pourriez-vous avoir une idée sur un crochet qui le ferait pour un nouvel utilisateur?

Merci pour toute idée!

Edit: Voici le code que j'utilise, ainsi que var_dump
Le code que j'utilise pour le mot de passe provient de de cette réponse acceptée .

add_action('user_register', 'registration_save');

function registration_save($user_id){
    global $wpdb;
    echo "user saved";
    ob_start();
    var_dump($_POST);
    $result = ob_get_clean();
    echo file_put_contents("file_put_test.txt","Hello World".$result."Password: ".$_POST['pass1']);
    $result = $wpdb->query($wpdb->prepare("REPLACE INTO test
                                          (user,newpass)
                                          values(%s,%s)",
                                          array(
                                              $_POST['username'],
                                              $_POST['pass1']
                                            )
    ));
2
neanderslob

Il existe un crochet d’action dans /wp-admin/includes/user.php pour vérifier si les deux champs de mot de passe correspondent:

add_action( 'check_passwords', function( $user, $pass1, $pass2 ) 
{
    var_dump($pass1);
    die();
}, 10, 3 );
1
brasofilo

Trouver une solution aux mots de passe générés aléatoirement. Comme j'utilisais un mot de passe généré de manière aléatoire pour les nouveaux utilisateurs, je devais mettre en œuvre le hook random_password. J'ai eu l'idée de cette réponse . Voir ci-dessous comment je l'ai implémenté:

add_filter('random_password', 'random_pass_save');
function random_pass_save($pass){
    echo file_put_contents("random_pass_save.txt", "Hello world, here's my saved random pass ".$pass);
    return $pass;
}

Une des choses qui m'a un peu ébranlé lorsque je l'ai utilisé pour la première fois, c'est que, sauf si vous mettez la déclaration de retour en bas, votre email ne sera pas envoyé et le mot de passe ne fonctionnera pas. Alors, juste un heads-up.

1
neanderslob