Impostazione dei cookie personalizzati in Wordpress


13

Sto cercando di impostare i cookie per reindirizzare gli utenti di ritorno alla mia pagina specifica all'interno del mio sito Wordpress.

Vorrei un consiglio con queste 2 cose:

  1. Dove nei file php di Wordpress dovrebbero essere controllati i cookie prima di caricare qualsiasi contenuto per gestire un reindirizzamento? Esiste un buon file in cui dovrebbe esistere rispetto ad altri?
  2. Come posso impostare correttamente un cookie in Wordpress? setcookie('cookie_name', 'cookie_value', time()+4000);non sembra salvare alcun cookie sul mio sistema.

Ah, ho capito che dovevo collegarlo a init (). SOLUZIONE: ho creato una funzione in Functions.php che imposta e controlla il cookie. affinché funzioni correttamente, dopo aver definito la funzione, all'esterno della funzione chiamare questo: add_action ('init', 'nome-funzione');

4
Puoi rispondere alla tua domanda ...
40XUserNotFound

2
In realtà, è esplicitamente incoraggiato. Per favore, rispondi tu stesso. Sto anche inviando questo a WordPress.SE, poiché sembra più appropriato lì.

Grazie ragazzi - non mi ero reso conto che esistesse un'area di Wordpress. E grazie per il suggerimento di rispondermi :) Apprezzato, +1.
Atticus,

Risposte:


17

1 - È possibile verificare la presenza di cookie ed eseguire il reindirizzamento utilizzando hook chiamati prima di qualsiasi output come l'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 - Il modo migliore per impostare i cookie sarebbe usare l'hook 'init' in questo modo:

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

?>

Questo è più coerente, se hai un blog su www.example.com/blog , i cookie non saranno disponibili su

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

Aggiornare

dovresti anche essere in grado di usare le costanti COOKIE_PATH e COOKIEDOMAIN invece di capirle da te, cosa che ho appena notato nella risposta di Andre R Kohl - drzaus


Come si inseriscono più variabili, ad esempio Nome, Cognome, Casuale1, Casuale2 anziché solo la variabile 'my_cookie_1'.?
Damainman,

1
Basta aggiungere altrosetcookie()
Nabil Kadimi il

Oh, non sapevo che i cookie contenessero solo una variabile per cookie. C'è un modo per impostare più cookie senza la necessità di avere il tempo e il codice URL sopra in modo che equivalga a meno codice? Sarebbero messi in una variabile?
Damainman,

dovresti anche essere in grado di usare le costanti COOKIEPATHeCOOKIEDOMAIN invece di capirle da solo, cosa che ho appena notato nella risposta di Andre R Kohl
drzaus,

correzione: COOKIE_DOMAIN
drzaus,

11

Probabilmente dovresti usare le costanti COOIKEPATHe COOKIE_DOMAIN, esistenti dal WP 3.0

setcookie("your_cookie", $your_value, time()+3600, COOKIEPATH, COOKIE_DOMAIN);

7

Ah, ho capito che dovevo collegarlo a init().

SOLUZIONE: ho creato una funzione in Functions.php che imposta e controlla il cookie. affinché funzioni correttamente, dopo aver definito la funzione, all'esterno della funzione chiamare questo:

add_action('init', 'function-name'); 

1

In questo modo ha funzionato:

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

    }

Correggi la formattazione del codice.
Jevuska,

Anche un piccolo contenuto sulla fonte è davvero utile.
fusione
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.