Redirection vers une page spécifique pour les utilisateurs non connectés (Créer un compte)

  • WordPress :5.4
  • Statut : non résolu
15 sujets de 1 à 15 (sur un total de 24)
  • Auteur
    Messages
  • #2347664
    Micklie
    Participant
    Chevalier WordPress
    109 contributions

    Bonsoir,

    Je suis en train de chercher une solution pour que les utilisateurs qui ne sont pas connectés se retrouvent automatiquement sur une page spécifique dans laquelle j’ai ajouté un formulaire d’inscription et de connexion.

    Dès qu’ils seront  connectés ils pourront consulter l’ensemble du site. J’ai essayé FORCE LOGIN mais il me redirige vers le système d’inscription wordpress et non ma page.

     

    #2347665
    ferman
    Participant
    Maître WordPress
    2628 contributions

    Bonjour,

    Si vous n’avez rien contre le code, vous pouvez utiliser l’un des deux codes ci-dessous. Le premier, si vous voulez rediriger seulement depuis l’accueil. Le deuxième, si vous voulez rediriger depuis toutes les pages. Dans l’exemple, l’id de la page vers laquelle vous voulez rediriger est 1000; pensez à modifier.

    //seulement depuis accueil (si page des derniers articles)
    
    add_action( 'template_redirect', 'redirect_non_logged_users_to_specific_page' );
    
    function redirect_non_logged_users_to_specific_page() {
    
    if ( !is_user_logged_in() && is_home() ){
    
    wp_redirect( '/nomdevotresite.fr/nomdevotrepage' ); 
        exit;
       }
    }
    
    
    
    
    //depuis toutes les pages
    
    add_action( 'template_redirect', 'redirect_non_logged_users_to_specific_page' );
    
    function redirect_non_logged_users_to_specific_page() {
    
    if (( !is_user_logged_in() && is_page() && !is_page(1000) )||( ! is_user_logged_in() && is_home() && !is_page(1000) )){
    
    wp_redirect( '/nomdevotresite.fr/nomdevotrepage' ); 
        exit;
       }
    }

    Ces codes sont à copier/coller de préférence dans le fichier “functions.php” d’un thème enfant. Si vous n’en avez pas c’est facile à créer avec l’extension “Child theme configurator“. Si vous ne voulez pas en créer vous pouvez utiliser l’extension “my custom functions“. C’est simple mais lisez les FAQ et surtout ça: “Q. What to do if this plugin crashed the website?” qui vous dit comment rétablir la situation en cas de problème (pas grave et facilement réparable  par FTP). Il vaut mieux éviter de mettre des codes dans functions.php du thème parent: ce sera effacé lors de la prochaine mise à jour du thème. Bien sûr on peut remettre le code après mais c’est un peu pénible, surtout si vous envisagez de mettre d’autres codes dans l’avenir.

    Ces codes sont adaptés de cet ARTICLE.

    #2347667
    Micklie
    Participant
    Chevalier WordPress
    109 contributions

    merci, ça ne me dérange pas du tout de le rajouter dans mon thème enfant, par contre j’ai ajouté le code pour la redirection de toutes les pages et je me retrouve avec une impossibilité d’accéder au site puisque trop de requête de redirection. Voici ce que j’ai inséré :

    function redirect_non_logged_users_to_specific_page() {
    
    if (( !is_user_logged_in() && is_page() && !is_page(153-2) )||( ! is_user_logged_in() && is_home() && !is_page(153-2) )){
    
    wp_redirect( '/monsite.com/mon-compte/' ); 
        exit;
       }
    }

     

    #2347670
    ferman
    Participant
    Maître WordPress
    2628 contributions

    Cela vient du fait que l’identité de la page n’est pas bonne  (153-2). Vous ne pouvez avoir qu’un nombre entier. De ce fait la page mon compte n’est pas exclue et se redirige sur elle-même. Comme on ne voit pas votre site je ne peux pas vous donner le N° ce cette page mais c’est facile à trouver. Aller dans pages -> toutes les pages et survolez le titre de la page avec la souris. Tout en bas de l’écran apparaît une ligne où vous verrez post=…. Les chiffres qui suivent sont l’id de la page.

    #2347672
    Micklie
    Participant
    Chevalier WordPress
    109 contributions

    j’ai bien le numéro de page, le -2 n’était que la révision, donc je l’ai supprimé. Quand je me mets en navigation privé, j’arrive sur le disclaimer que j’ai mis, je l’accepte mais ensuite je navigue normalement comme si le bout de code n’était pas actif.

    J’ai désactivé l’ensemble de mes extensions au cas où, mais rien ne change

    #2347675
    ferman
    Participant
    Maître WordPress
    2628 contributions

    Non, je ne pense pas que ce soit une question d’extension. Vous n’avez plus le ” trop de requête de redirection”?

    Ce que vous devriez observer: Si vous n’êtes pas connecté, quelle que soit la page que vous essayez d’atteindre, sauf la page mon-compte, vous êtes redirigé vers mon-compte. Une fois connecté, vous naviguez normalement.

    #2347679
    Micklie
    Participant
    Chevalier WordPress
    109 contributions

    effectivement ce n’est pas une question d’extension, et je n’ai plus le problème de requête mais je navigue normalement sans pointer vers mon compte quand je ne suis pas logué.

    #2347687
    ferman
    Participant
    Maître WordPress
    2628 contributions

    Alors si vous avez bien mis le code dans functions.php du thème enfant et si ce thème enfant fonctionne bien, je n’ai pas d’explication à donner. Il faudrait tester sur votre site ce qui est impossible sur ce forum. Vous pouvez encore essayer à partir de my-custom-functions .

    Une chose encore, la redirection ne marche que pour les pages, pas les articles ou les produits, ou la page boutique. Pour cela il faut ajouter d’autres conditions.

    #2347688
    Micklie
    Participant
    Chevalier WordPress
    109 contributions

    Voilà pourquoi, j’ai un système woocommerce par dessus ! C’est pour cela que ça ne fonctionne pas, j’avais complétement oublié que c’est différent.

    Quelle instructions faut-il ajouter dans ce cas ?

    Merci beaucoup pour votre aide

    #2347693
    ferman
    Participant
    Maître WordPress
    2628 contributions

    Déjà, ça illustre bien pourquoi il est utile de remplir le questionnaire du forum : si on on demande toujours le maximum de renseignements (thèmes, extensions et si possible adresse du site) ce n’est pas par curiosité mais simplement pour pouvoir  donner les réponses les plus adaptées. Par exemple, dans votre cas, le code simplifié ci-dessous devrait suffire (espérons-le).

    add_action( 'template_redirect', 'redirect_non_logged_users_to_specific_page' );
    
    function redirect_non_logged_users_to_specific_page() {
    
    if ( !is_user_logged_in() && !is_page(1000) ){
    
    wp_redirect( '/monsite.com/mon-compte' ); 
        exit;
       }
    }

    Vous serez redirigé depuis page d’accueil, pages normales, articles, page boutique, page catégorie de produit si vous en avez et produits.

    • Cette réponse a été modifiée le il y a 1 semaine et 1 jour par ferman.
    #2347696
    Micklie
    Participant
    Chevalier WordPress
    109 contributions

    Le code fonctionne parfaitement si je mets une redirection vers google par contre vers la page spécifiée pas du tout, le site mouline et tourne en rond. Il s’agit d’une page créé par woocommerce (mon compte), il faudrait je pense mettre une exception sur celle-ci pour autoriser son accès.

    #2347697
    ferman
    Participant
    Maître WordPress
    2628 contributions

    Si c’est la page “mon compte” woocommerce et si vous n’avez pas modifié les permaliens,  elle ne s’appelle pas “mon compte” (ça c’est votre dénomination) mais “my-account” et donc elle n’existe pas pour la redirection. Remplacez” mon compte” par “my-account” et réessayez.

    #2347698
    Micklie
    Participant
    Chevalier WordPress
    109 contributions

    J’ai bien vérifié, mais j’avais déjà fais le nécessaire pour le permalien de mes pages en les personnalisant. Voici une capture en pièce jointe. J’ai l’impression que ça tourne en rond sans jamais trouvé puis je me retrouve avec une erreur de requêtes trop nombreuse même quand je tape manuellement l’adresse dans la bar du navigateur.

    Si je mets une adresse qui n’existe pas je retombe bien sur mon erreur 404 perso

    • Cette réponse a été modifiée le il y a 1 semaine et 1 jour par Micklie.
    Fichiers joints :
    Vous devez être connecté pour voir les fichiers joints.
    #2347701
    ferman
    Participant
    Maître WordPress
    2628 contributions

    Les requêtes trop nombreuses viennent du fait que la page n’est pas exclue. Essayez en mettant l’adresse complète de la page mon compte dans le wp_redirect; https://www. etc…

    #2347702
    Micklie
    Participant
    Chevalier WordPress
    109 contributions

    Je viens de faire plusieurs essaies :

    Mes extensions (j’ai essayé en désactivant toutes les extensions sauf woocommerce, idem) :

    • 404PAGE
    • Adminimize
    • Age Gate
    • Age Gate User Registration
    • All In One WP Security
    • Contact Form 7
    • Cookie Notice
    • Disable Comments
    • Login/Signup Popup ( Inline Form + Woocommerce )
    • Statify
    • Theme My Login
    • TinyMCE Advanced
    • WooCommerce
    • WooCommerce PayPal Checkout Gateway
15 sujets de 1 à 15 (sur un total de 24)
  • Vous devez être connecté pour répondre à ce sujet.