Configuración de cookies personalizadas en Wordpress

10

Estoy intentando configurar cookies para redireccionar a los usuarios que regresan a mi página específica dentro de mi sitio de Wordpress.

Me gustaría un consejo con estas 2 cosas:

  1. ¿En qué parte de los archivos php de Wordpress se deben revisar las cookies antes de cargar cualquier contenido para manejar una redirección? ¿Hay un buen archivo que debería existir en otros?
  2. ¿Cómo configuro correctamente una cookie en Wordpress? setcookie('cookie_name', 'cookie_value', time()+4000); no parece estar guardando ninguna cookie en mi sistema.
pregunta Atticus 02.07.2011 - 05:51

4 respuestas

6

Ah, me di cuenta de que necesitaba conectar esto al init() .

SOLUCIÓN: Creé una función en functions.php que configuraría y verificaría la cookie. para que esto funcione correctamente, después de definir la función, fuera de la función, llame a esto:

add_action('init', 'function-name'); 
    
respondido por el Atticus 05.07.2011 - 06:33
12

1 - Puede verificar si hay cookies y hacer su redirección utilizando los enlaces que se llaman antes de cualquier salida como el enlace '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 mejor manera de configurar las cookies sería utilizando el enlace 'init' como este:

<?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);
}

?>

Esto es más coherente, si tiene un blog en www.example.com/blog , los Coockie (s) no estarán disponibles en

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

Actualizar

  

También deberías poder usar las constantes COOKIE_PATH y COOKIEDOMAIN en lugar de descifrarlas tú mismo, lo que acabo de notar en la respuesta de Andre R Kohl - drzaus

    
respondido por el Nabil Kadimi 16.06.2012 - 15:17
9

Probablemente debería usar las constantes COOIKEPATH y COOKIE_DOMAIN , existentes desde WP 3.0

setcookie("your_cookie", $your_value, time()+3600, COOKIEPATH, COOKIE_DOMAIN);
    
respondido por el André R. Kohl 19.04.2014 - 09:32
1

Esta manera funcionó:

    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 );
         }

    }
    
respondido por el Siddhartha Gautam 27.05.2016 - 10:17

Lea otras preguntas en las etiquetas