redirection du formulaire de connexion dans wordpress
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.php
fichier 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.php
fichier 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.php
page, 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'));
}
0 commentaire