Redirection WooCommerce après la déconnexion [Guide ultime]

Publié: 2022-01-10

Redirection WooCommerce après la déconnexion La redirection WooCommerce après la déconnexion peut être créée à l'aide du code de cet article pour rediriger les clients WooCommerce vers une page ou un article spécifique ou une URL externe après leur déconnexion. Dans cet article, je veux montrer comment créer cette redirection avec du code. Si vous avez manqué mon tutoriel précédent, j'ai illustré comment créer un shortcode de page de déconnexion WooCommerce, ce qui peut être un bon point de départ avant de créer la redirection de déconnexion WooCommerce.

Il existe des plugins qui peuvent être utilisés pour créer des redirections de déconnexion WooCommerce, mais ils ne sont pas aussi bons qu'ils devraient l'être ; Je travaille sur une meilleure solution qui vous aidera à gérer la redirection WooCommerce après la déconnexion, tout comme le plugin que j'ai créé pour la déconnexion WooCommerce après le paiement.

Si vous souhaitez faire partie des premiers utilisateurs, veuillez me contacter afin que je puisse vous ajouter à la liste car le plugin sera prêt dans 2 semaines à partir d'aujourd'hui.

Pour cet article, je souhaite partager l'approche de code que vous pouvez utiliser pour créer une redirection de déconnexion WooCommerce efficace, mais le plugin aura plusieurs options conditionnelles qui étendent les options de redirection par défaut comme je l'ai accompli dans le plugin WooCommerce Redirect after checkout.

Sections de redirection de déconnexion de WooCommerce - Parcourir et passer à la section

Dans la plupart de mes projets clients, j'avais du mal à faire fonctionner la redirection de déconnexion sur un site WooCommerce. Pour cette raison, j'ai décidé de mettre en place ce guide ultime de création de redirection WooCommerce après le guide de déconnexion.

J'espère que cela peut être un endroit idéal pour les utilisateurs avertis et non avertis en technologie pour trouver une solution pour créer la meilleure option de redirection de déconnexion WooCommerce pour leurs projets.

Comme il ne s'agit pas d'un article de blog ordinaire, il est long et peut prendre plus de temps pour lire et comprendre chaque détail. Je voudrais vous aider à parcourir les différentes sections afin que vous puissiez choisir rapidement la solution dont vous avez besoin pour votre projet.

Table des matières

  1. Redirection de la page d'accueil - Après la déconnexion, redirection vers la page d'accueil dans Woocommerce
  2. Redirection de la page actuelle - Bouton de déconnexion Woocommerce et redirection vers la page actuelle
  3. Redirection de page spécifique par ID - Page de redirection de déconnexion Woocommerce
  4. Redirection du rôle du client – ​​Redirection de la déconnexion du client Woocommerce
  5. Redirection vers la page précédente - Connexion Woocommerce Redirection vers la page précédente
  6. Redirection de la page de mon compte – Redirection de déconnexion de mon compte Woocommerce
  7. Redirection d'URL externe - Extrait Php de la fonction de redirection de déconnexion de Woocommerce
  8. Correction de l'erreur de redirection de déconnexion - La redirection de déconnexion de Woocommerce ne fonctionne pas
  9. URL de redirection de déconnexion WP – URL de déconnexion Woocommerce
  10. Plugin de redirection de déconnexion Woocommerce
  11. Création d'une redirection de déconnexion dans WordPress - Fonctions principales
  12. Redirection de connexion WooCommerce : crochet woocommerce_login_redirect
  13. Fonction de déconnexion de WordPress – wp_logout_url()
  14. Crochet de filtre WordPress logout_redirect
  15. Crochet de filtre WordPress login_redirect
  16. Redirection multisite WooCommerce après la déconnexion
  17. Crochet de filtre : allow_redirect_hosts
  18. Fonction de redirection WordPress : wp_ Redirect
  19. Fonction de redirection WordPress : wp_safe_redirect()
  20. Conclusion

Redirection WooCommerce après la déconnexion

redirection de déconnexion woocommerce Par défaut, WooCommerce après la déconnexion, l'enregistrement et la connexion redirige les utilisateurs vers « mon compte ». Ce comportement n'est pas souhaitable, en particulier sur les sites Web qui visent à augmenter leurs ventes.

Les trois actions de gestion des utilisateurs les plus courantes sur votre site WooCommerce incluent :

  • Enregistrement de l'utilisateur
  • Utilisateur en ligne
  • Enregistrement de l'utilisateur
  • Modification du profil utilisateur
  • Déconnexion de l'utilisateur

Chacune de ces actions peut être améliorée non seulement pour faciliter la navigation de l'utilisateur, mais également pour augmenter les perspectives de vente pour les clients nouveaux et existants. L'URL ou le lien de déconnexion Woocommerce se trouve par défaut sur la page Mon compte et la plupart des propriétaires de magasins WooCommerce souhaitent modifier la redirection de déconnexion sur la page Mon compte pour rediriger vers une page spécifique ou un entonnoir de vente WooCommerce.

Comment rediriger la déconnexion depuis la page Mon compte ?

L'une des questions les plus courantes sur la déconnexion de WooCommerce est de savoir comment créer une déconnexion automatique à partir de la page Mon compte et rediriger vers un autre site Web ou vers une page interne.

C'est la question qui sera abordée et résolue dans cet article. À la fin de ce didacticiel, vous devriez créer confortablement une redirection de déconnexion WooCommerce personnalisée, même avec peu ou pas de connaissances préalables en matière de codage.

redirection woocommerce après la déconnexion Page Mon compte

Pourquoi créer une redirection de déconnexion WooCommerce

Un bon site Web de commerce électronique devrait exploiter toutes les opportunités pour rediriger les utilisateurs vers les pages susceptibles d'augmenter les ventes et les conversions après chaque action - connexion, déconnexion, panier, paiement, inscription, etc.

Il s'agit de créer un bon entonnoir de vente WooCommerce pour promouvoir les ventes croisées d'autres produits, les ventes en baisse et d'autres produits connexes ou les produits les plus vendus.

Les redirections de déconnexion WooCommerce vous permettent d'augmenter votre taux de conversion des ventes en redirigeant les clients après la déconnexion vers une page de destination des ventes ou une page de redirection stratégique de l'entonnoir WooCommerce - au lieu de rediriger le client vers la page "mon compte" par défaut.

Ce didacticiel vous montrera comment modifier le paramètre par défaut de la redirection WooCommerce après la déconnexion et rediriger les utilisateurs vers des URL personnalisées telles que "entonnoirs de vente", "offres spéciales", "catalogue", la page précédente, la page de destination spéciale ou tout lien externe qui convient à l'augmentation des ventes et des conversions.

Dans cet article, je partagerai avec vous une astuce rapide sur la façon de créer une redirection personnalisée après la déconnexion de WooCommerce, tout comme j'ai partagé précédemment comment créer une redirection WooCommerce après le paiement. Idéalement, la déconnexion par défaut de WooCommerce n'est pas aussi fluide qu'elle devrait l'être. Il affiche un message de confirmation qui est une nuisance pour un certain nombre d'utilisateurs.

J'ai expliqué précédemment comment supprimer le message de confirmation de déconnexion de WooCommerce, ce qui permet à vos clients de se déconnecter automatiquement de votre site WooCommerce sans que le message de confirmation n'apparaisse.

J'ai également partagé l'extrait de code de déconnexion WooCommerce que vous pouvez étendre dans ce didacticiel pour le rendre plus efficace en ajoutant l'option de redirection, tout comme je l'ai fait dans le plugin WooCommerce de redirection après paiement qui propose des options de redirection conditionnelle.

Modifier la redirection de déconnexion de WooCommerce modifier la redirection de déconnexion de woocommerce

Changer la redirection de déconnexion de WooCommerce est une autre amélioration importante de l'expérience de déconnexion du client que vous devriez considérer, tout comme j'ai illustré comment ajouter un lien de déconnexion de WooCommerce au menu.

Alors, approfondissons maintenant la création de la meilleure option de redirection de déconnexion WooCommerce que vous pouvez immédiatement mettre en œuvre sur votre boutique pour améliorer l'expérience utilisateur.

Cette option est simple car nous devons utiliser un filtre pour vérifier l'événement de déconnexion lorsqu'il se produit.

Lorsque la déconnexion de WooCommerce se produit, nous pouvons nous accrocher à ce crochet - woocommerce_login_redirect puis transmettre une fonction de rappel avec notre logique de redirection vers la page où nous voulons rediriger l'utilisateur après la déconnexion.

Si vous n'êtes pas familier avec les crochets d'action et les crochets de filtre WooCommerce ou WordPress, ce tutoriel sur les crochets apply_filters et do_action peut être un bon point de départ pour vous familiariser avec les filtres et les crochets.

C'est toujours une bonne pratique avant de commencer à créer la fonction de redirection de déconnexion WooCommerce, vous devez vérifier si l'utilisateur est connecté. Laissez-nous maintenant décrire les différentes options que vous pouvez utiliser pour créer une redirection de déconnexion WooCommerce.

Chacune de ces fonctions utilise des crochets d'action et des fonctions WooCommerce et WordPress par défaut qui sont décrits en détail dans les autres sections de ce didacticiel.

Redirection de la page d'accueil - Après la déconnexion, redirection vers la page d'accueil dans Woocommerce

L'une des redirections WooCommerce les plus courantes après la déconnexion est vers la page d'accueil. Par défaut, WooCommerce redirige vers la page Mon compte une fois la déconnexion terminée.

Si vous souhaitez rediriger l'utilisateur vers la page d'accueil, vous devriez envisager d'ajouter ce code à votre fichier functions.php du thème WooCommerce actif.

Copiez simplement ce code dans votre fichier functions.php de thème et testez pour voir si l'utilisateur WooCommerce est redirigé vers la page d'accueil après la déconnexion.

Redirection vers la page d'accueil après l'extrait de déconnexion

Vous pouvez également ajouter cet extrait de code au fichier des plugins et cela fonctionnera de manière transparente.

 add_action('wp_logout','njengah_homepage_logout_redirect');

fonction njengah_homepage_logout_redirect(){

    wp_redirect( home_url() );

    sortir;

}

Comment fonctionne le code de redirection

Il y a deux fonctions et un crochet d'action utilisés dans ce code pour créer la redirection WooCommerce après la déconnexion comme dans le code ci-dessus. Examinons attentivement le rôle de chacune de ces fonctions et crochet :

Hook : wp_logout

Ce code utilise le crochet d'action wp_logout qui a été discuté en détail dans cet article sous la section - Crochet WordPress - wp_logout. Idéalement, il s'agit d'un crochet de déconnexion WordPress par défaut qui est déclenché après l'exécution de la déconnexion.

Fonction : wp_redirect()

Dans ce cas, si vous regardez la fonction de rappel si elle utilise la fonction wp_redirect() qui a également été expliquée en détail dans la section section sur la fonction WordPress wp_redirect.

Fonction : home_url()

La fonction finale utilisée dans la fonction de rappel est la home_url() , il s'agit d'une fonction WordPress qui renvoie l'url de la page d'accueil du site actuel.

home_url( string $path = '', string|null $scheme = null )

Par exemple, vous pouvez afficher l'URL de la page d'accueil du site actuel à l'aide de la fonction home_url() comme suit :

 $url = home_url();

echo $url;

Ainsi, dans ce cas de redirection WooCommerce après la déconnexion, il renverra l'URL du site actuel et l'ajoutera sous forme de chaîne à la fonction wp_redirect() .

Pour que nous comprenions comment fonctionne le crochet de redirection de déconnexion de WooCommerce lorsque nous l'appliquons dans votre code, nous devons examiner chacune de ces fonctions WordPress par défaut et le rôle qu'elles jouent dans la création de redirections.

Redirection de la page actuelle – Bouton de déconnexion de Woocommerce et redirection vers la page actuelle

La deuxième redirection WooCommerce la plus courante après la déconnexion est la redirection vers la page actuelle après la déconnexion d'un utilisateur. Ceci est important lorsque vous souhaitez que l'utilisateur reste sur la même page qu'il était lorsqu'il s'est déconnecté.

Dans ce cas, nous devons connaître la page de l'utilisateur actuel et l'appliquer à la logique de redirection de déconnexion de WooCommerce.

Pour créer une redirection WooCommerce vers la page actuelle après l'événement de déconnexion, nous devons utiliser la fonction get_permalink() pour nous faire connaître la page actuelle, puis l'appliquer à la fonction de rappel de déconnexion.

Dans ce cas, vous devez ajouter l'extrait de code suivant à votre functions.php ou à vos fichiers de plugin pour exécuter la redirection WooCommerce après la déconnexion de la page actuelle.

 function njengah_redirect_current_page_after_logout( $logout_url, $redirect ){

       renvoie $logout_url . '&redirect_to=' . get_permalien();

}

add_filter( 'logout_url', 'njengah_redirect_current_page_after_logout', 10, 2 );

Comment fonctionne le code

Ce code comprend un hook de filtre logout_url et la fonction de rappel a la fonction WordPress get_permalink() qui établit la page actuelle pour les utilisateurs frontaux et l'utilise pour renvoyer l'URL de déconnexion.

Filtre : logout_url()

Dans ce cas, nous avons utilisé logout_url qui est un autre filtre de déconnexion principal de WordPress et WooCommerce qui a été discuté en détail dans la section ci-dessous Fonction WordPress logout_url .

Ce code peut ne pas fonctionner pour tous les utilisateurs et est susceptible d'échouer pour les utilisateurs du backend d'administration. Il s'agit d'une redirection appropriée après la déconnexion pour les clients sur la page Mon compte, mais pas pour les autres rôles.

Pour que cela fonctionne également pour les utilisateurs du backend, nous devons remplacer la fonction get_permalink() par la valeur de requête HTTP qui représente la page actuelle.

PHP Super Global $_SERVER['HTTP_HOST']

Donc, dans ce cas, nous devons ajouter ce super global $_SERVER['HTTP_HOST'] comme alternative à la fonction get_permalink() . Le $_SERVER est une super variable globale PHP qui contient des informations sur les en-têtes, les chemins et les emplacements des scripts.

Le super global $_SERVER['HTTP_HOST'] renvoie l'en-tête Host de la requête en cours. Cela nous aide donc à obtenir la page actuelle afin que nous puissions l'appliquer à l'URL de redirection WooCommerce après la déconnexion. Le nouveau code qui fonctionne pour tous les utilisateurs devrait être le suivant :

 function njengah_redirect_current_page_after_logout( $logout_url, $redirect ){

      renvoie $logout_url . '&redirect_to=http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ;

}

add_filter( 'logout_url', 'njengah_redirect_current_page_after_logout', 10, 2 );

Vous pouvez maintenant créer un bouton pour conclure le lien de redirection en suivant le tutoriel que j'ai partagé précédemment sur la façon de créer un bouton de déconnexion WooCommerce.

Redirection de page spécifique - Page de redirection de déconnexion Woocommerce (par ID)

Dans certains cas, vous souhaiterez peut-être rediriger les utilisateurs vers une page spécifique après leur déconnexion. La page peut être ajoutée à la logique de redirection de déconnexion de WooCommerce à l'aide de l'identifiant de la page.

Dans ce cas, vous devez connaître l'ID de la page afin de le transmettre à la fonction de redirection. Vous pouvez obtenir une redirection de déconnexion WooCommerce vers une page spécifique par identifiant à l'aide de l'extrait de code suivant.

 add_action('wp_logout','njengah_specific_page_logout_redirect');

fonction njengah_specific_page_logout_redirect(){

    wp_redirect( get_permalink($pageId) );

    sortir;

}

Comment fonctionne le code

Ce code utilise le crochet d'action wp_logout et dans la fonction de rappel, nous avons la fonction get_permalink() avec une variable $pageID qui doit être remplacée par l'ID de la page où vous souhaitez rediriger l'utilisateur après le paiement.

Si vous n'êtes pas sûr de l'ID de la page, vous pouvez utiliser cet article que j'ai écrit sur la façon d'obtenir l'ID de la page dans WordPress.

Fonction WooCommerce : wc_get_page_id()

Vous pouvez également utiliser le nom de la page sur laquelle vous souhaitez rediriger l'utilisateur avec la fonction WooCommerce wc_get_page_id() comme dans l'extrait de code ci-dessous :

 add_action('wp_logout','njengah_specific_page_logout_redirect');

fonction njengah_specific_page_logout_redirect(){

       wp_redirect( get_permalink( wc_get_page_id( 'shop' ) ) );

      sortir;

}

La fonction wc_get_page_id() récupère les identifiants de page et est couramment utilisée pour myaccount, edit_address, shop, cart, checkout, pay, view_order, termes et renvoie -1 si aucune page n'est trouvée.

Redirection du rôle du client – ​​Redirection de la déconnexion du client Woocommerce

Un autre scénario de redirection WooCommerce après la déconnexion consiste à rediriger les utilisateurs en fonction de leur rôle. Vous souhaitez probablement rediriger le client vers une page donnée après sa déconnexion au lieu de la redirection Mon compte par défaut après la déconnexion.

Dans ce cas, vous pouvez exécuter la redirection après la déconnexion pour le rôle client seul ou un autre rôle ou un groupe de rôles en utilisant l'extrait de code partagé ci-dessous :

 if( is_user_logged_in() ) { // vérifie s'il y a un utilisateur connecté       

    $user = wp_get_current_user(); // obtenir et définir l'utilisateur actuel

          $roles = ( array ) $user->roles; // obtention du rôle

           // $roles[0] ; // Retourne un rôle

            //retourne $roles ; // renvoie le tableau des rôles

             // Faites la comparaison ici 

              if($roles[0] == 'client'){

                 // Exécute la redirection si le rôle de l'utilisateur courant est égal à client

                    add_action('wp_logout','njengah_specific_page_logout_redirect');

                       fonction njengah_specific_page_logout_redirect(){

                        wp_redirect( get_permalink($pageId) );

                             sortir;

                   }

           }

 }

Comment fonctionne le code

Nous avons commencé par vérifier si l'utilisateur est connecté comme je l'ai expliqué dans un article précédent sur la façon de savoir si l'utilisateur WordPress est connecté.

Obtenir le rôle d'utilisateur

La deuxième étape consistait à obtenir le rôle de l'utilisateur actuel dans WordPress en utilisant la fonction wp_get_current_user() et en exigeant le rôle de l'utilisateur actuel.

Comparez et exécutez la redirection si le rôle correspond au client

La troisième étape a été de faire maintenant la comparaison du rôle obtenu à l'étape précédente avec le rôle client et si le rôle vous correspond maintenant ajoutez l'action de redirection et la fonction.

Vous pouvez remplacer le rôle par un autre rôle, y compris les rôles personnalisés. Vous pouvez également modifier la page de redirection en passant un identifiant de page différent dans la fonction get_permalink() .

Redirection vers la page précédente - Déconnexion de Woocommerce Redirection vers la page précédente

Vous pouvez créer une redirection WooCommerce après vous être déconnecté de la page précédente à l'aide des sessions. Dans ce cas, vous devez créer une session et l'ajouter à une fonction et l'utiliser dans la logique pour créer la redirection après la déconnexion à la page précédente.

Vous pouvez utiliser l'extrait de code ci-dessous pour créer la redirection de déconnexion WooCommerce vers la page précédente :

 // Démarre la session globale pour enregistrer l'URL de référence
fonction start_session() {
     session_start();
}

add_action('init', 'start_session', 1);

// Récupérer l'URL de référence et l'enregistrer

fonction redirect_url() {
    si (is_user_logged_in()) {
        $_SESSION['referer_url'] = wp_get_referer();
    } autre {
        session_destroy();
    }

}
add_action( 'template_redirect', 'redirect_url' );

//Redirection de déconnexion

function njengah_logout_redirect() {

    si (isset($_SESSION['referer_url'])) {

        wp_redirect($_SESSION['référent_url']);

    } autre {

        wp_redirect(home_url());

    }

}

add_filter('wp_logout', 'njengah_logout_redirect', 1100, 2);

Comment fonctionne le code

Ce code a utilisé les sessions PHP pour créer une session et enregistrer l'URL de la page actuelle et dans la fonction de redirection, nous testons l'URL de session définie - $_SESSION['referer_url'] .

S'il est défini, nous créons la redirection vers cette page comme dans les autres redirections de déconnexion dont nous avons parlé précédemment.

Redirection de la page de mon compte – Redirection de déconnexion de mon compte Woocommerce

La redirection de déconnexion de WooCommerce à partir de la page Mon compte est l'une des questions les plus fréquemment posées sur la déconnexion de WooCommerce.

Ce n'est pas différent des autres redirections de déconnexion en fait, vous pouvez ajouter une redirection de déconnexion sur la page Mon compte en utilisant l'extrait de code ci-dessous :

 add_action('wp_logout','njengah_my_account_page_logout_redirect');

fonction njengah_my_account_page_logout_redirect(){

       wp_redirect( get_permalink($pageId) );

                sortir;

}

Vous pouvez modifier la valeur de la variable $pageID dans la fonction get_permalink() pour qu'elle corresponde à l'ID de page de la page ou de la publication de redirection et cela fonctionnera de manière transparente.

Redirection d'URL externe - Extrait Php de fonction de redirection de déconnexion de Woocommerce :

Si vous souhaitez rediriger les utilisateurs vers une URL externe après leur déconnexion de votre boutique WooCommerce, vous pouvez le faire en utilisant un extrait ajouté aux fonctions de votre thème ou dans un plugin personnalisé.

Cet extrait php de fonction de redirection de déconnexion WooCommerce qui peut être ajouté au fichier functions.php pour créer la redirection après la déconnexion est le suivant :

 add_action('wp_logout','njengah_redirect_after_logout');

fonction njengah_redirect_after_logout(){

  wp_redirect( $url);

  sortir();

}

Ajoutez simplement cet extrait de code dans functions.php et remplacez la variable $url par votre URL de redirection respective entre guillemets.

Par exemple, si vous souhaitez rediriger l'utilisateur vers une URL externe après sa déconnexion et que l'URL externe est http://example.com , vous pouvez remplacer la variable $url par l'URL complète comme dans le code ci-dessous :

 add_action('wp_logout','njengah_redirect_after_logout');

fonction njengah_redirect_after_logout(){

    wp_redirect( 'http://example.com');

    sortir();

}

URL de redirection de déconnexion WP – URL de déconnexion Woocommerce

Si vous souhaitez créer un bouton de déconnexion WooCommerce et le placer dans un modèle personnalisé ou sur toute autre page, cela vous aide à connaître l'URL de redirection de déconnexion WP que vous pouvez facilement ajouter sur n'importe quel bouton ou lien.

Ce qui suit est l'URL de redirection de déconnexion WP qui peut être changée en n'importe quelle autre page en changeant le paramètre 'mon-compte' "

 wp_logout_url(

    get_permalink( wc_get_page_id( 'moncompte' ) )

 );

Vous pouvez également avoir l'URL externe dans l'URL de redirection de déconnexion WooCommerce comme suit :

 wp_logout_url(

   'http://exemple.com/'

);

Vous pouvez également ajouter les fonctions WordPress à l'URL de redirection de déconnexion WP comme suit :

 wp_logout_url(

    home_url()

);

Cette URL de redirection de déconnexion WP peut être ajoutée dans des modèles personnalisés et peut également être utilisée dans des codes abrégés ou des boutons pour afficher une option de déconnexion dans des endroits qui ne sont pas les emplacements par défaut du bouton de déconnexion, comme les widgets, le pied de page, le menu de la barre supérieure et bien plus encore.

Correction de l'erreur de redirection de déconnexion : la redirection de déconnexion de Woocommerce ne fonctionne pas

Si vous avez personnalisé la redirection de déconnexion WooCommerce et que cela ne fonctionne pas, il y a probablement un bogue dans votre code ou l'une des raisons suivantes.

Priorité de crochet

La première étape consiste à vérifier la priorité de votre add_action() ou add_filter() par rapport aux autres hooks WordPress. C'est l'une des causes les plus courantes de l'erreur de redirection de déconnexion.

Plus la priorité du hook est élevée, plus le chargement est précoce. Si les deux crochets ont la même priorité, celui placé au-dessus de l'autre est chargé en premier. Ajuster la priorité de l'action ou du hook de filtre peut être un bon endroit pour commencer votre débogage.

Erreur de code - Erreur de syntaxe

La deuxième étape consiste à vérifier si tout le code contient une erreur et une erreur courante est une erreur de syntaxe. Il est possible que lorsque vous modifiez le code, vous oubliez de placer un guillemet fermant ou une parenthèse.

Contre-vérifiez le code et ajoutez de préférence le code à un vérificateur d'erreurs de syntaxe PHP.

Il est préférable que vous connaissiez des outils tels que Visual Studio ou des IDE tels que Netbeans, car ces outils peuvent rapidement vous aider à détecter les erreurs de syntaxe dans votre code.

Code ajouté au mauvais fichier

Une autre cause fréquente de l'erreur de redirection de déconnexion de WooCommerce qui ne fonctionne pas est lorsque vous avez le bon code mais que vous l'ajoutez au mauvais endroit. Dans ce cas, si vous ajoutez le code à un thème, il doit strictement être ajouté au fichier functions.php.

Lorsque vous ajoutez ce code à un plugin, vous devez faire attention à ne pas l'ajouter à l'intérieur d'une classe qui n'est pas instanciée. C'est une bonne idée de l'ajouter au fichier de base du plug-in et de corriger également les modifications éventuellement nécessaires pour garantir que le code s'intègre dans le contexte de la structure de fichiers de votre plug-in personnalisé.

Conflits de plugins ou de thèmes

Dans la plupart des cas, il existe des plugins ou des thèmes qui contrôlent la redirection de connexion et de déconnexion dans WooCommerce. Ces plugins peuvent entrer en conflit, entraînant une erreur de redirection de déconnexion.

Si vous rencontrez une erreur de déconnexion de redirection WooCommerce, vous pouvez commencer par désactiver tous les plugins et utiliser le thème WordPress par défaut pour vérifier si l'erreur est causée par un conflit de plugin ou de thème.

Plugin de redirection de déconnexion Woocommerce

Enfin, rien ne facilite l'ajout d'une redirection WooCommerce après la déconnexion qu'un plugin bien codé avec les bonnes fonctionnalités, une bonne expérience utilisateur et un support de classe mondiale. Pendant des années, j'ai résolu des centaines de problèmes de déconnexion, de connexion et d'enregistrement sur WooCommerce et WordPress en général.

Au cours des dernières semaines, j'ai rassemblé toute mon expérience et les leçons apprises sur les redirections WooCommerce et la déconnexion. J'ai créé une remarquable URL de redirection de déconnexion WooCommerce qui comprend les fonctionnalités suivantes :

Fonctionnalités de redirection de déconnexion

  • Redirection WooCommerce après la déconnexion vers n'importe quelle page - sélectionnez la page dans une liste déroulante
  • Redirection WooCommerce après la déconnexion vers un seul produit - sélectionnez le produit dans une liste déroulante
  • Rediriger WooCommerce après la déconnexion vers n'importe quel message - sélectionnez le message dans une liste déroulante
  • WooCommerce redirige après la déconnexion vers n'importe quelle catégorie de produits - sélectionnez la catégorie de produits dans une liste déroulante
  • Redirection WooCommerce après la déconnexion vers la page actuelle
  • Redirection WooCommerce après la déconnexion à la page précédente
  • Redirection WooCommerce après la déconnexion vers une URL externe
  • Redirection WooCommerce après la déconnexion en fonction du rôle
  • Redirection WooCommerce après la déconnexion en fonction de l'historique des achats (convient aux offres spéciales)
  • WooCommerce force la déconnexion après le paiement

Fonctionnalités de redirection de connexion

  • Redirection WooCommerce après la connexion à n'importe quelle page - sélectionnez la page dans une liste déroulante
  • Redirection WooCommerce après la connexion à un seul produit - sélectionnez le produit dans une liste déroulante
  • Redirection WooCommerce après la connexion à n'importe quel message - sélectionnez le message dans une liste déroulante
  • Redirection WooCommerce après la connexion à n'importe quelle catégorie de produit - sélectionnez la catégorie de produit dans une liste déroulante
  • Redirection WooCommerce après la connexion à la page actuelle
  • Redirection WooCommerce après la connexion à la page précédente
  • Redirection WooCommerce après connexion à une URL externe
  • Redirection WooCommerce après la connexion en fonction du rôle
  • Redirection WooCommerce après la connexion en fonction de l'historique des achats (convient aux offres spéciales)

Le plugin WooCommerce Redirect after Login & Logout (WRAL) devrait être publié dans les prochaines semaines. Si vous souhaitez être l'un des premiers à adopter, ne soyez pas en reste car le lancement sera accompagné d'une réduction de 70 %.

Vous pouvez rejoindre la liste des 100 premiers early adopters en me contactant immédiatement. Sa sortie est prévue le 2 novembre 2020 .

Création d'une redirection de déconnexion dans WordPress - Fonctions principales

Après avoir examiné le moyen rapide d'ajouter des extraits pour créer une redirection WooCommerce après la déconnexion, il est utile de mettre en évidence les fonctions et crochets de déconnexion WordPress par défaut et d'expliquer en détail aux développeurs qui lisent ce guide pour comprendre le fonctionnement de ces redirections.

Ces fonctions et crochets d'action peuvent être utiles pour créer une redirection WooCommerce après la déconnexion. En général, vous pouvez créer une redirection de déconnexion WooCommerce à l'aide des crochets et fonctions suivants :

  • Fonction wp_logout_url()
  • Crochet d'action wp_logout
  • filtre logout_redirect

Je veux expliquer chacune de ces fonctions et comment vous pouvez l'utiliser pour créer une redirection WooCommerce après le paiement et pourquoi vous voudrez peut-être utiliser l'une plutôt que l'autre.

Il est également important de souligner la façon dont vous pouvez créer une redirection de connexion WooCommerce à l'aide de filtres. Il existe également une fonction utile pour créer une redirection de connexion dans WooCommerce. Commençons par le crochet de redirection de connexion qui est très utile pour créer une redirection de connexion dans WooCommerce.

Redirection de connexion WooCommerce : crochet woocommerce_login_redirect

Il s'agit du crochet spécial WooCommerce qui nous permet de contrôler les fonctions de redirection de connexion dans WooCommerce. Elle est similaire à la fonction de déconnexion par défaut de WordPress qui est appliquée lors de la création d'une redirection WooCommerce après la déconnexion. Son utilisation de base est la suivante :

apply_filters( 'woocommerce_login_redirect', $redirect, $user );

Comme vous pouvez le voir il faut 2 paramètres et les paramètres sont les suivants :

Paramètre La description Exemple(s) d'utilisation
$redirect Il s'agit de la page de redirection où l'utilisateur atterrira après la connexion.

Cela peut être utile pour modifier la redirection WooCommerce par défaut après la connexion pour permettre à l'utilisateur d'accéder à la page spécifique après la connexion.

add_filter('woocommerce_login_redirect', 'login_redirect')

Vous pouvez ajouter le crochet de filtre et dans la fonction de rappel, vous pouvez passer la logique de redirection comme suit :

function login_redirect($redirect_to){
return home_url();
}

Comme vous pouvez le voir, j'ai ajouté le paramètre $redirect_to et renvoyé l'URL de redirection pour rediriger l'utilisateur vers la page d'accueil après la connexion.

$user Il s'agit de l'utilisateur auquel l'action de redirection est appliquée.

Cela peut être particulièrement utile lorsque vous souhaitez créer une redirection après la connexion pour des utilisateurs spécifiques.

Crochet : woocommerce_login_redirect ne fonctionne pas

Ce code peut être utilisé dans les thèmes et le code du plug-in, mais vous devez comprendre les priorités pour éviter de tirer trop tôt ou trop tard, ce qui conduira au scénario courant de woocommerce_login_redirect ne fonctionnant pas.

Vous devez également trouver d'autres raisons qui peuvent woocommerce_login_redirect de fonctionner. Un autre plugin qui a une fonction similaire ou identique qui fonctionne avant que votre code ne soit déclenché est particulièrement intéressant.

Donc si vous découvrez que woocommerce_login_redirect ne fonctionne pas, la première chose à vérifier est la priorité un exemple de cas vous pouvez avoir ces deux extraits de code :

# priorité inférieure

add_filter( 'woocommerce_login_redirect', 'njengah_login_redirect', 1100, 2 );

# Priorité supérieure

add_filter( 'woocommerce_login_redirect', 'njengah_login_redirect', 10, 2 );

Comme vous pouvez le voir dans les deux cas, les numéros de priorité sont différents, la règle de base est que plus le numéro est petit, plus la priorité est élevée, ce qui signifie qu'il se charge en premier.

Lorsque cette fonction est utilisée ailleurs dans votre thème ou dans un autre plugin et que vous essayez de recréer la redirection WooCommerce après la fonction de connexion ou de déconnexion, vous devez faire attention à la priorité. C'est la solution pour résoudre le problème de non-fonctionnement de woocommerce_login_redirect .

Fonction de déconnexion de WordPress – wp_logout_url()

Cette fonction est responsable de la création de l'URL de déconnexion dans WordPress.

Il aide les développeurs et les utilisateurs de WordPress à créer rapidement une URL de déconnexion qui peut être ajoutée à un lien ou à un bouton et j'ai illustré dans cet article - comment créer une URL de déconnexion WooCommerce .

WooCommerce étend la fonctionnalité en ayant les points de terminaison d'URL qui jouent un rôle crucial en aidant les développeurs et les utilisateurs à créer une page de déconnexion WooCommerce sans aucun codage.

Si vous souhaitez comprendre en profondeur le processus de déconnexion de WooCommerce et de WordPress, il est utile de commencer par évaluer la fonction wp_logout_url() .

C'est une fonction spéciale que vous rencontrerez dans plusieurs thèmes et plugins WordPress et c'est une bonne idée d'avoir un aperçu de ce qui se passe sous le capot.

L'utilisation de base de la fonction est la suivante :

wp_logout_url( string $redirect = '' )

Comme vous pouvez le voir, la fonction prend un paramètre qui est une chaîne et voici les détails du paramètre :

Paramètre La description Exemple(s) d'utilisation
$redirect Ceci est un paramètre de chaîne et il est facultatif de l'ajouter, vous pouvez le laisser vide et la fonction fonctionnera.

Il est cependant utile dans le cas où vous souhaitez ajouter une URL de redirection vers une page spécifique.

Donc, dans ce cas, le paramètre $redirect est l'URL de la page de redirection, la destination où tous les utilisateurs qui utilisent cette fonction dans ce contexte doivent atterrir.

Vous pouvez également passer d'autres fonctions en tant que paramètres qui renvoient strictement une chaîne puisque wp_logout_url() ne prend que la chaîne en paramètre.

Vous pouvez utiliser cette fonction avec un lien comme suit :

<a href="<?php echo wp_logout_url(); ?>">Logout</a>

Vous pouvez utiliser cette fonction et passer une autre fonction en tant que paramètre qui renvoie une chaîne de l'URL de redirection comme suit :

<a href="<?php echo wp_logout_url( home_url() ); ?>">Logout</a>

<a href="<?php echo wp_logout_url( get_permalink() ); ?>">Logout</a>

Si vous souhaitez mieux comprendre la fonction, il est utile de regarder le code défini dans le noyau de WordPress. Ce code de fonction de base est le suivant :

 function wp_logout_url( $redirect = '' ) {
    $args = tableau();
    si ( ! vide( $redirection ) ) {
        $args['redirect_to'] = urlencode( $redirect );
    }
 
    $logout_url = add_query_arg( $args, site_url( 'wp-login.php?action=logout', 'login' ) );
    $logout_url = wp_nonce_url( $logout_url, 'déconnexion' );
 
    /**
     * Filtre l'URL de déconnexion.
     *
     * @depuis 2.8.0
     *
     * @param string $logout_url L'URL de déconnexion encodée en HTML.
     * @param string $redirect Chemin vers lequel rediriger lors de la déconnexion.
     */
    return apply_filters( 'logout_url', $logout_url, $redirect );
}

Crochet d'action : wp_logout

Il s'agit d'un crochet d'action qui est déclenché lorsque l'utilisateur a été déconnecté. Elle joue un rôle important dans la création de la fonctionnalité de redirection après la déconnexion. L'utilisation de base de cette fonction est la suivante :

do_action( 'wp_logout', int $user_id )

Comme vous pouvez le voir, il prend un paramètre et les détails du paramètre sont les suivants :

Paramètre La description Exemple(s) d'utilisation
$user_id Il s'agit de l'ID de l'utilisateur qui a été déconnecté. add_action('wp_logout','logout_redirect');

Dans ce cas, nous l'avons ajouté en tant que crochet d'action et nous pouvons passer notre logique de redirection après déconnexion dans la fonction de rappel comme suit :

function logout_redirect(){

wp_redirect( home_url() );

exit;

}

Donc, dans ce cas, nous redirigeons l'utilisateur après la déconnexion vers la page d'accueil.

Ces fonctions sont utiles lorsque vous souhaitez contrôler la redirection de l'utilisateur après sa connexion ou sa déconnexion.

Crochet de filtre WordPress logout_redirect

Un autre hook de filtre que vous pouvez utiliser pour créer une redirection après la déconnexion dans WooCommerce est le Filter Hook logout_redirect. Ce crochet de filtre fonctionne comme la fonction wp_logout_url() ou le crochet d'action wp_logout.

Il s'agit d'un filtre WordPress de base conçu pour aider à créer une redirection WordPress ou WooCommerce après la déconnexion. Son utilisation de base est la suivante :

apply_filters( 'logout_redirect', string $redirect_to, string $requested_redirect_to, WP_User $user )

Comme vous pouvez le voir, il a trois paramètres et le paramètre peut être décrit en détail comme suit :

Paramètre La description
$redirect_to Il s'agit de l'URL de destination de la redirection et il doit s'agir d'une chaîne, par exemple, http://example.com
$requested_redirect_to Il s'agit de l'URL de destination de redirection demandée qui est transmise en tant que paramètre et il doit également s'agir d'une chaîne, tout comme le premier paramètre.
$user Il s'agit de l'objet utilisateur – objet WP_User de l'utilisateur qui a été déconnecté.

Vous pouvez créer une redirection WordPress basée sur un filtre après la déconnexion en utilisant logout_redirect comme suit :

 add_filter( 'login_redirect', 'njengah_logout_redirect', 10, 3 );

function njengah_logout_redirect( $location, $request, $user ) {

  global $user ;

if ( isset( $user->roles ) && is_array( $user->roles ) ) {

   if ( in_array( 'abonné', $user->roles ) ) {

       retourner home_url();

          } autre {

        retourne $redirect_to ;

      }

    }

   retourner;

}

Crochet de filtre WordPress login_redirect

Il est également important de souligner qu'il existe un filtre similaire pour la connexion - login_redirect cela fonctionne de la même manière que le filtre logout_redirect. En fait, l'utilisation est similaire et il est livré avec 3 paramètres et l'expression générale est la suivante :

apply_filters( 'login_redirect', string $redirect_to, string $requested_redirect_to, WP_User|WP_Error $user )

The parameters are similar expect the last parameter that has two user object options as you will see in the detailed description below:

Paramètre La description
$redirect_to This is the redirect destination URL and it must be a string, for example, http://example.com
$requested_redirect_to This is the requested redirect destination URL that is passed as a parameter and it must also be a string just like the first parameter.
$user This is the user object – WP_User object of the user who has been logged in if the login was successful but for unsuccessful login the WP_Error object is represented by this parameter

As you can see there are several ways you can use to create a WordPress or WooCommerce logout redirect.

In a quick summary we have highlighted the three most important hooks you should consider using for creating the redirect after logout. These hooks include:

  • Default WordPress logout_redirect – using filter to create redirect after logout
  • Action hook wp_logout – fired after the logout and thus can be used to create redirect.
  • WordPress logout function wp_logout_url() – WordPress default function that retrieves the logout URL and this can be useful in adding a redirect since it takes one parameter for the redirect path.

WooCommerce Multisite Redirect After Logout

When you are creating a redirect after logout in WooCommerce the wp_logout hook may fail to work when you have a multisite. In this case you need a little creativity to control how to create the WooCommerce redirect after logout.

In fact in a multisite set up WordPress logout function requires you to filter the allowed URLs for redirect and this can easily be executed using the allowed_redirect_hosts filter.

It helps to understand how this filter hook works so that you can use it in the WooCommerce multisite redirect after checkout. So let's briefly look at this filter.

Filter Hook: allowed_redirect_hosts

This is a filter hook that filters all the allowed hosts to apply redirect to. So in simple terms it checks the redirect URLs and vets them. The basic usage of this filter is as follows:

apply_filters( 'allowed_redirect_hosts', string[] $hosts, string $host )

As you can see in the expression above, it takes two parameter and they can be explained in details as follows:

Paramètre La description Usage Example(s)
$hosts (string[]) This is simply an array with all the allowed host names add_filter( 'allowed_redirect_hosts', 'njengah_allow_parent_redirect' );

function njengah_allow_parent_redirect( $allowed ) {

$allowed[] = 'example.com'; // Multisite parent

return $allowed;

}

<a href="<?php echo wp_logout_url( 'http://example.com' ); ?>">Logout</a>

$host (string) This is the host name of the redirect destination.

This can be left empty.

You can add more hosts to the callback function and come up with code like this:

add_filter( 'allowed_redirect_hosts', 'njengah_allow_parent_redirect' );

fonction njengah_allow_parent_redirect( $autorisé ) {
    $autorisé = tableau(
    'blog.exemple.com',
    'codex.exemple.com',
     );
    return array_merge( $hosts, $allowed );
}

Cela sert simplement à valider les URL de redirection autorisées, ce qui est un ajout important à la redirection WooCommerce multisites après la déconnexion, car dans la plupart des cas, la redirection wp_logout par défaut échouera sans le filtrage des hôtes de redirection.

Fonction de redirection WordPress : wp_ Redirect

Lorsque vous créez une redirection dans WooCommerce ou WordPress, comme je l'ai expliqué dans le post sur la façon de créer une redirection après le paiement dans WooCommerce, vous avez besoin de la fonction wp_redirect() .

Comprendre le rôle de cette fonction est crucial dans la création de la redirection WooCommerce après le paiement, car il s'agit de la fonction principale responsable de l'exécution des redirections dans WordPress et WooCommerce. Décrivons brièvement comment cela fonctionne et le paramètre qu'il prend. L'utilisation générale de la fonction wp_redirect() est la suivante :

wp_redirect( string $location, int $status = 302, string $x_redirect_by = 'WordPress' )

Comme vous pouvez le voir, cette fonction prend trois paramètres et ils peuvent être décrits en détail comme suit :

Paramètre La description
$location Il s'agit du chemin ou de l'URL où rediriger l'utilisateur. Il doit s'agir d'une chaîne et elle est nécessaire pour que la fonction fonctionne.
$status Il s'agit du code d'état de la réponse HTTP qui doit être appliqué à cette redirection. Il s'agit d'un entier et il est facultatif de l'utiliser.
Par exemple, vous pouvez ajouter 301 pour une redirection permanente ou vous pouvez le laisser comme valeur par défaut qui est 302, ce qui signifie déplacé temporairement.
$x_redirect_by C'est l'application qui fait la redirection et c'est par défaut WordPress et devrait rarement être désactivé puisque nous créons une redirection WooCommerce après la déconnexion qui est dans le contexte de WordPress.

Noter

Il est important de comprendre que lorsque vous utilisez la fonction wp_redirect(), tit ne se ferme pas tout seul. Il est donc important de toujours ajouter exit après la fonction car l'exit en PHP est utilisé pour terminer le script en cours d'exécution après l'exécution de la ligne de code précédente. La meilleure façon d'utiliser la fonction wp_redirect est donc la suivante :

 wp_redirect( $url );

sortir

Vous pouvez également créer une redirection conditionnelle à l'aide de la fonction wp_redirect avec l' if statement comme suit :

 si (wp_redirect($url)) {

   sortir;

}

Cette fonction peut être utilisée avec le crochet template_redirect comme dans le code ci-dessous :

 function njengah_wp_redirect_example() {

    if ( is_user_logged_in() && is_page( $id ) ){

        wp_redirect( get_permalink( $id ) );

        sortir;

    }

}

add_action( 'template_redirect', 'njengah_wp_redirect_example' );

Comme vous pouvez le voir dans le code ci-dessus, il peut prendre une fonction comme paramètre à condition que la fonction renvoie une chaîne pour le paramètre $location comme c'est le cas avec la fonction get_permalink( )

Fonction de redirection WordPress : wp_safe_redirect()

Le wp_safe_redirect() est la deuxième fonction de redirection WordPress qui peut être utile pour exécuter la redirection WooCommerce après la déconnexion. Cette fonction fonctionne comme la fonction wp_redirect() mais elle a une vérification supplémentaire de l'URL de redirection.

Dans la fonction wp_redirect, le paramètre $location n'est pas vérifié, mais dans la fonction wp_safe_redirect() , le paramètre $location est vérifié pour déterminer s'il s'agit d'un hôte autorisé.

C'est la différence entre les deux fonctions de redirection. L'utilisation générale de cette fonction de redirection est similaire à celle de wp_redirect et l'expression générale est la suivante :

wp_safe_redirect( string $location, int $status = 302, string $x_redirect_by = 'WordPress' )

Comme vous pouvez le voir, les paramètres sont les mêmes :

Paramètre La description
$location Il s'agit du chemin ou de l'URL où rediriger l'utilisateur. Il doit s'agir d'une chaîne et elle est nécessaire pour que la fonction fonctionne.
$status Il s'agit du code d'état de la réponse HTTP qui doit être appliqué à cette redirection. Il s'agit d'un entier et il est facultatif de l'utiliser.
Par exemple, vous pouvez ajouter 301 pour une redirection permanente ou vous pouvez le laisser comme valeur par défaut qui est 302, ce qui signifie déplacé temporairement.
$x_redirect_by C'est l'application qui fait la redirection et c'est par défaut WordPress et devrait rarement être désactivé puisque nous créons une redirection WooCommerce après la déconnexion qui est dans le contexte de WordPress.

Cette fonction permet aux développeurs de plugins de définir ou de supprimer la liste des hôtes autorisés et si l'hôte ne figure pas dans la liste des hôtes autorisés, la redirection échoue et revient par défaut à wp-admin.

Tout comme la fonction wp_redirect , wp_safe_redirect ne se ferme pas automatiquement et vous oblige également à ajouter une sortie comme dans les extraits de code ci-dessous :

 wp_safe_redirect( $url );

sortir;

Vous pouvez également l'utiliser avec une instruction conditionnelle comme dans l'exemple précédent :

 si (wp_safe_redirect($url)) {

    sortir;

}

Conclusion

Dans cet article, j'ai décrit les étapes à suivre pour créer les différentes options de redirection WooCommerce après la déconnexion. J'ai illustré avec un exemple de code comment créer une déconnexion de redirection WordPress ou WooCommerce en utilisant la variété de fonctions et de crochets disponibles à partir du noyau WordPress.

Dans un bref résumé pour résumer ce que nous avons couvert ; comment créer une redirection après la déconnexion vers :

  • Redirection de déconnexion de la page actuelle
  • Redirection de déconnexion de la page précédente
  • Redirection de déconnexion de la page d'accueil
  • Redirection de déconnexion de page spécifique
  • Redirection de déconnexion d'URL externe

J'espère que ce guide vous donnera un bon point de départ pour créer une redirection de déconnexion dans WooCommerce. Si vous souhaitez partager des commentaires ou contribuer à l'amélioration de ce guide et même signaler des erreurs ou des erreurs, n'hésitez pas à me contacter. Si vous aimez ce guide, vous pouvez également consulter l'autre guide que j'ai écrit sur la façon de créer une redirection WooCommerce après l'achat.

Articles similaires

Meilleures listes de plugins WooCommerce