Configuration de cookies personnalisés dans Wordpress

10

J'essaie de définir des cookies pour rediriger les utilisateurs revenant sur ma page spécifique de mon site Wordpress.

Je voudrais un conseil avec ces 2 choses:

  1. Où dans le fichier Wordpress php les cookies doivent-ils être vérifiés avant de charger du contenu pour gérer une redirection? Existe-t-il un bon fichier qui devrait exister sur d’autres?
  2. Comment définir correctement un cookie dans Wordpress? setcookie('cookie_name', 'cookie_value', time()+4000); ne semble enregistrer aucun cookie dans mon système.
posée Atticus 02.07.2011 - 05:51

4 réponses

6

Ah, j'ai réalisé que je devais intégrer cela dans le init() .

SOLUTION: J'ai créé une fonction dans functions.php qui définissait et vérifiait le cookie. pour que cela fonctionne correctement, après avoir défini la fonction, en dehors de la fonction, appelez ceci:

add_action('init', 'function-name'); 
    
réponse donnée Atticus 05.07.2011 - 06:33
12

1 - Vous pouvez rechercher des cookies et effectuer votre redirection à l'aide de hooks appelés avant toute sortie telle que le hook 'init':

<?php

// Hook the function "redirect()" on to the "init" action
add_action('init', 'redirect');

// redirect() may redirect the user depending on the cookies he has
function redirect(){
  /* CODE */
}

?>

2 - Le meilleur moyen de définir des cookies consiste à utiliser le hook 'init' comme ceci:

<?php

add_action('init', 'my_setcookie');

// my_setcookie() set the cookie on the domain and directory WP is installed on
function my_setcookie(){
  $path = parse_url(get_option('siteurl'), PHP_URL_PATH);
  $host = parse_url(get_option('siteurl'), PHP_URL_HOST);
  $expiry = strtotime('+1 month');
  setcookie('my_cookie_name_1', 'my_cookie_value_1', $expiry, $path, $host);
  /* more cookies */
  setcookie('my_cookie_name_2', 'my_cookie_value_2', $expiry, $path, $host);
}

?>

Cela est plus cohérent, si vous avez un blog sur www.example.com/blog , le ou les coockie (s) ne seront pas disponibles sur

.
  • www.example.com
  • www.example.com/store
  • exemple.com
  • www2.example.com
  • ...

Mettre à jour

  

vous devriez aussi pouvoir utiliser les constantes COOKIE_PATH et COOKIEDOMAIN plutôt que de les calculer vous-même, ce que je viens de remarquer dans la réponse de Andre R Kohl - drzaus

    
réponse donnée Nabil Kadimi 16.06.2012 - 15:17
9

Vous devriez probablement utiliser les constantes COOIKEPATH et COOKIE_DOMAIN , existantes depuis WP 3.0

.
setcookie("your_cookie", $your_value, time()+3600, COOKIEPATH, COOKIE_DOMAIN);
    
réponse donnée André R. Kohl 19.04.2014 - 09:32
1

Cette méthode a fonctionné:

    add_action( 'init', 'function-to-setcookie' ); 

    function function-to-setcookie(){

        //use condition here , in which page you eant to set cookie
        //choose a page where you want the cookie to be set
        $pageurl = get_option('siteurl').'/set-cookie-page'; 

       // use a function to get current page url and use condition 
       //to match it with the desired page where you want to set cookie 
       if ( $pageurl === current_page_url() ) {
           setcookie( 'cookie_name', 'cookie_value', $expiryTime, $cookiepath, $siteurl );
         }

    }
    
réponse donnée Siddhartha Gautam 27.05.2016 - 10:17

Lire d'autres questions sur les étiquettes