Bonjour,

Alors voilà, j'ai suivi le très bon tutoriel de grafikart sur "comment faire une page de connexion et d'inscription wordpress personnalisées". Cependant, j'ai rencontré quelques problèmes.

###La page d'inscription

J'ai donc suivi pas à pas la réalisation de la page d'inscription, mais des problèmes sont apparus. En effet, le wp_signon($user) posait un problème, car il faisait planter tout le code, j'ai alors cherché sur Internet et remplacé :

$error = false;
$test ="bloc bloc";
    if (!empty($_POST)) {
    $d = $_POST;
    if(empty($d['user_login']) && empty($d['user_pass']) && empty($d['user_pass2']) && empty($d['user_email'])) {
        $error="<p> Merci de remplir les champs. </p>";
    }
    else {
    if($d['user_pass'] != $d['user_pass2']){
        $error = '<p>Les deux mots de passes sont différents.</p>';
    }else{
    if ( empty($d['user_pass']) AND empty($d['user_pass2']))
    {
        $error = '<p>Merci de bien vouloir entrer un mot de passe.</p>';
    }
    else {
            $user_login = $d['user_login'];
            $url = get_fcontent('une url ici');
            $characts    = 'abcdefghijklmnopqrstuvwxyz';
            $characts   .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';    
            $characts   .= '1234567890'; 
            $code_aleatoire      = ''; 
            for($i=0;$i < 10;$i++)    //10 est le nombre de caractères
            { 
                $code_aleatoire .= substr($characts,rand()%(strlen($characts)),1); 
            }
            $pos = strpos($url, $test);
            if ($pos != true ) {
                $error = '<p>Ne match pas</p>';
                }else{
                if (!is_email($d['user_email'])) {
                $error = '<p>Veuillez entrer un email valide.</p>';
                } else {
                $user = wp_insert_user(array(
                    'user_login' => $d['user_login'],
                    'user_pass' => $d['user_pass'],
                    'user_email' => $d['user_email'],
                    'user_registered' => date('Y-m-d H:i:s')
            ));
            if(is_wp_error($user)) {
                $error = $user->get_error_message();
            }else{
                $msg = 'Vous êtes inscrit';
                $headers = 'From : '. get_option('admin_email') ."\r\n";
                wp_mail($d['user_email'], 'Inscription à..', $msg, $headers);
                $creds = array();
                // CECI A ETE REMPLACE :
                $creds['user_login'] = $d['user_login'];
                $creds['user_pass'] = $d['user_pass'];
                $creds['remember'] = true;
                $user = wp_signon( $creds, true );
                $d = array();
                // FIN DE LA PARTIE REMPLACEE
                header('Location: accueil');
                }
            }
        }
    }
}
}
?>

Cependant, il y a des choses que j'ai du mal à comprendre. Déjà, pourquoi est-ce que, lorsque j'ai cliqué sur envoyé, l'utilisateur n'est pas connecté (il est bien redirigé vers la page d'accueil et enregistré dans la bdd) ?

### La page connexion

J'ai donc réalisé de la même façon ma page de connexion. Cependant, lorsque je ne remplis soit la partie login ou la partie mot de passe, un message d'erreur me dit que je n'ai pas remplis ce mot de passe. Alors, j'ai changé et opté pour user_password à la place de user_pass (dans mon formulaire de connexion, name et id) et ça fonctionne (dans le fichier user.php, il est souvent mentionné user_password), du moins quand je me connecte avec l'utilisateur root, mais pas avec les autres.
Pourtant, ce qui est bizarre, c'est que lorsque je regarde ma base données, l'utlisateur est bien présent : le hachage du mot de passe peut il poser problème ? Faut-il revenir à user_pass ? PHP de connexion.php :

$error = false;
if (!empty($_POST)) {
    $user = wp_signon($_POST);
    if (is_wp_error($user)) {
        $error = $user->get_error_message();
    }
    else {
            if ($user->ID != 0) {
                header ('location:profil');
            }
    }
}
?> 

Merci d'avance :D !

1 réponse


salut
Pour créer ta page de connexion perso tu peux suivre ce tuto qui est celui de Grafikart mais en version écrite.
Des coups c'est plus facile.
Regarde si entre les deux tu as raté quelque chose déjà .
Le lien .
Il est dit dans les com que c'est encore d'actu en 2016 donc ça devrait le faire.
Bon courage