redirection du formulaire de connexion dans wordpress

Publié par Jean-Michel le

J’utilise wp_login_form()sur un site en ce moment, et lorsque vous vous connectez correctement, il redirige l’utilisateur vers l’URL appropriée.

Malheureusement si vous faites une erreur dans le nom d’utilisateur/mot de passe il vous redirige vers wp-login.php, qui secoue sa boite à l’utilisateur. Et perturbe l’expérience de marque cohérente, comme.

Alors est-ce que quelqu’un connaît un moyen de faire en sorte qu’il ne le fasse pas?

Solution n°1 trouvée

En disant que vous utilisez la wp_login_form()fonction, je suppose que vous utilisez un formulaire personnalisé sur sa propre page.

Il y a quelques choses que vous pouvez faire.

Si ce formulaire se trouve sur sa propre page et que vous souhaitez simplement que le mot de passe/nom d’utilisateur incorrect revienne sur cette page et alerte l’utilisateur, vous pouvez créer une fonction dans votre functions.phpfichier qui effectuera une redirection vers la page de référence comme suit :

add_action( 'wp_login_failed', 'my_front_end_login_fail' );  // hook failed login

function my_front_end_login_fail( $username ) {
   $referrer = $_SERVER['HTTP_REFERER'];  // where did the post submission come from?
   // if there's a valid referrer, and it's not the default log-in screen
   if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') ) {
      wp_redirect( $referrer . '?login=failed' );  // let's append some information (login=failed) to the URL for the theme to use
      exit;
   }
}

Si vous souhaitez simplement supprimer le tremblement, vous pouvez utiliser ce morceau de code dans votre functions.phpfichier qui arrêtera le tremblement.

function my_login_head() {
remove_action('login_head', 'wp_shake_js', 12);
}
add_action('login_head', 'my_login_head');

Cette dernière suggestion est simplement basée sur le fait qu’un utilisateur accède à la wp-login.phppage, puis le renvoie à votre page de connexion personnalisée.

function redirect_login_page() {
    $login_page  = home_url( '/login/' ); // CHANGE THIS TO YOUR PAGE URL
    $page_viewed = basename($_SERVER['REQUEST_URI']);

    if( $page_viewed == "wp-login.php" && $_SERVER['REQUEST_METHOD'] == 'GET') {
        wp_redirect($login_page);
        exit;
    }
}
add_action('init','redirect_login_page');

Solution n°2 trouvée

Essaye ça :

Cela vous permettra d’inclure l’en-tête et le pied de page du thème à la page de connexion

add_action( 'login_head', 'wp_custom_login_header' );
    function wp_custom_login_header() {
        wp_enqueue_style( 'wp-custom-login' );

        do_action('wp_custom_login_header_before');
        get_header();
        do_action('wp_custom_login_header_after');
    }

    add_action( 'login_footer', 'wp_custom_login_footer' );
    function wp_custom_login_footer() {
        do_action('wp_custom_login_footer_before');
        get_footer();
        do_action('wp_custom_login_footer_after');
    }

    function wp_custom_login_is_login_page() {
        return in_array($GLOBALS['pagenow'], array('wp-login.php', 'wp-register.php'));
    }

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *