J'essaie de configurer les cookies pour rediriger les utilisateurs revenant sur une page spécifique de mon site Wordpress.
Je voudrais quelques conseils avec ces 2 choses:
setcookie('cookie_name', 'cookie_value', time()+4000);
ne semble pas enregistrer de cookies dans mon système.Ah, je me suis rendu compte que je devais accrocher cela à la 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');
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 - La meilleure façon de créer des cookies serait d'utiliser le crochet '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);
}
?>
Ceci est plus cohérent, si vous avez un blog à www.example.com/blog , le ou les coockie (s) ne seront pas disponibles à
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
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);
Cette manière travaillée:
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 );
}
}