web-dev-qa-db-fra.com

woocommerce et is_user_logged_in () s'ils ne sont pas redirigés vers la page d'accueil

J'utilise actuellement woocommerce et souhaite rediriger les utilisateurs non connectés vers la page d'accueil, mais j'ai un peu de mal à déterminer où je devrais mettre en œuvre cette

J'ai fait des recherches et déterminé que l'utilisation de la is_user_logged_in () je peux voir si l'utilisateur est connecté.

J'ai essayé d'implémenter dans le woocommerce/woocommerce-functions.php

// When default permalinks are enabled, redirect shop page to post type archive url
    if (is_user_logged_in() && isset($_GET['page_id']) && $_GET['page_id'] > 0 && get_option( 'permalink_structure' )=="" && $_GET['page_id'] ==     woocommerce_get_page_id('shop') ) :
        wp_safe_redirect( get_post_type_archive_link('product') );
        exit;
    endif;

mais cela permet toujours à la page d'être visible

2
bugz

Vous allez vouloir insérer votre code en haut des modèles de page pour les pages Woo que vous souhaitez que la redirection affecte plutôt que le fichier de fonctions. Ainsi, par exemple, si vous souhaitez rediriger les utilisateurs lorsqu'ils tentent d'accéder à une page de produit individuelle, vous pouvez la placer en haut de la page plugins-> woocommerce-> templates-> single-product.php.

Lors de la modification de modèles, il est toutefois recommandé de faire une copie et de la placer dans votre répertoire de thèmes afin que, lorsque Woo est mis à jour, il ne remplace pas les modifications que vous avez apportées. Donc, pour l'exemple que j'ai donné ci-dessus (appliqué à mon thème). Je copierais single-product.php et le placerais dans le fichier themes-> agency, puis apporterais les modifications à ce fichier. Votre thème utilisera alors toujours ce fichier avant celui du modèle de fichier Woo.

0
Kyle

Tout d'abord, ne modifiez jamais les plug-ins d'autres peuples ni les fichiers WordPress principaux.

Utilisez également des accolades plutôt que de jolies mises en forme, car les mises en forme superbes cassent IDE la mise en surbrillance du code, la mise en correspondance des accolades, des vérificateurs de syntaxe et d'autres outils utiles.

Alors mettez ce code:

// When default permalinks are enabled, redirect shop page to post type archive url
if (is_user_logged_in() && isset($_GET['page_id']) && $_GET['page_id'] > 0 && get_option( 'permalink_structure' )=="" && $_GET['page_id'] ==     woocommerce_get_page_id('shop') ) {
    wp_redirect( get_post_type_archive_link('product') );
    die();
}

Soit en:

  • le sommet de functions.php
  • Un plugin dédié
  • Sur l'appel du crochet Init
1
Tom J Nowell

Utilisez le code functions.php:

add_filter('woocommerce_login_redirect', 'wc_login_redirect');

function wc_login_redirect( $redirect_to ) {
     $redirect_to = 'https://www.example.com/';
     return $redirect_to;
}
0
Dhirendra Kumawat