Rendre les pages WooCommerce accessibles aux utilisateurs connectés uniquement


12

J'ai un site Web utilisant WordPress et un commerce électronique utilisant WooCommerce. Je souhaite que ma boutique (et toutes ses pages) soit vue uniquement par les utilisateurs connectés.

Via le plugin User Access Manager , j'ai refusé l'accès à la page de la boutique, mais avec un lien direct vers un produit, etc., on peut néanmoins accéder à cette page particulière, même si l'utilisateur n'est pas connecté.

Comment puis-je rediriger les utilisateurs, qui ne sont pas connectés, vers une autre page s'ils essaient d'accéder à une page WooCommerce?

Réponses:


24

Mettez ceci dans votre functions.phpdossier:

function wpse_131562_redirect() {
    if (
        ! is_user_logged_in()
        && (is_woocommerce() || is_cart() || is_checkout())
    ) {
        // feel free to customize the following line to suit your needs
        wp_redirect(home_url());
        exit;
    }
}
add_action('template_redirect', 'wpse_131562_redirect');

Qu'est ce que ça fait?
Nous vérifions si un utilisateur non connecté souhaite voir une page WooCommerce et le redirige vers notre page d'accueil.


Merci de votre aide. Le fichier functions.php est dans mon dossier de thème ?? Et comment puis-je rappeler cette fonction depuis la page produit? Merci :-)
Alessandro

Merci beaucoup. Votre code fonctionne bien pour moi. Merci beaucoup :)
Alessandro

1
Assurez-vous que vous ne définissez aucune des pages de woocommerce comme votre page d'accueil, car le site ne fonctionnera plus.
SPRBRN

7

Je viens de changer la redirection vers

wp_redirect( site_url('my-account/') )

afin que les utilisateurs soient redirigés sur la page "Mon compte" s'ils ne sont pas connectés ou enregistrés.


2
Ce n'est pas la meilleure méthode pour rediriger vers la My Accountpage. Il est préférable de récupérer le permalien de la page Mon compte que vous avez liée dans vos paramètres WooCommerce. De cette façon, chaque fois que le permalien est modifié ou que vous avez un site multilingue exécutant le permalien sera toujours correctement récupéré. En bref: il vaut mieux ne pas coder en dur les permaliens / slugs (ou les URL en général). Une meilleure méthode serait:wp_redirect( get_permalink( get_option( 'woocommerce_myaccount_page_id' ) ) );
Rens Tillmann

vous codez manquant; fin
user889030

0

Je changerais pour ça

wp_safe_redirect( wc_get_page_permalink( 'myaccount' ) );

au lieu de

wp_redirect( site_url('my-account/') );

2
Pourriez-vous expliquer pourquoi cela aidera, afin que d'autres personnes puissent apprendre quelque chose de votre réponse?
Krzysiek Dróżdż
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.