Ustawianie niestandardowych plików cookie w Wordpress


13

Próbuję ustawić pliki cookie, aby przekierowywać powracających użytkowników do mojej określonej strony w mojej witrynie Wordpress.

Chciałbym uzyskać porady dotyczące tych 2 rzeczy:

  1. Gdzie w plikach php Wordpress należy sprawdzić pliki cookie przed załadowaniem jakiejkolwiek zawartości do obsługi przekierowania? Czy istnieje dobry plik, w którym powinien istnieć nad innymi?
  2. Jak poprawnie ustawić ciasteczko w Wordpress? setcookie('cookie_name', 'cookie_value', time()+4000);Wygląda na to, że nie zapisuje żadnych plików cookie w moim systemie.

Ach, zdałem sobie sprawę, że muszę podpiąć to do init (). ROZWIĄZANIE: Utworzyłem funkcję w functions.php, która ustawia i sprawdza ciasteczko. aby działało to poprawnie, po zdefiniowaniu funkcji, poza funkcją wywołać to: add

4
Możesz odpowiedzieć na własne pytanie ...
40XUserNotFound

2
W rzeczywistości jest to wyraźnie zalecane. Proszę odpowiedzieć samemu. Wysyłam to również do WordPress.SE, ponieważ wydaje się tam bardziej odpowiednie.

Dzięki chłopaki - nie zdawałem sobie sprawy, że istnieje obszar Wordpress. I dziękuję za wskazówkę, aby odpowiedzieć sobie :) APpreciated, +1.
Atticus,

Odpowiedzi:


17

1 - Możesz sprawdzić pliki cookie i dokonać przekierowania za pomocą haków, które są wywoływane przed każdym wyjściem, takim jak haczyk „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 - Najlepszym sposobem na ustawienie plików cookie byłoby użycie haka „init” w następujący sposób:

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

?>

Jest to bardziej spójne, jeśli masz blog na www.example.com/blog , stroje nie będą dostępne pod adresem

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

Aktualizacja

powinieneś także móc używać stałych COOKIE_PATH i COOKIEDOMAIN zamiast samemu je rozgryzać, co właśnie zauważyłem w odpowiedzi Andre R Kohla - drzaus


Jak umieścić wiele zmiennych, na przykład Imię, Nazwisko, Random1, Random2 zamiast tylko zmiennej „my_cookie_1”.?
Damainman

1
Po prostu dodaj więcejsetcookie()
Nabil Kadimi

Och, nie wiedziałem, że pliki cookie zawierają tylko jedną zmienną na plik cookie. Czy istnieje sposób na ustawienie wielu plików cookie bez potrzeby podawania powyższego kodu czasu i adresu URL, aby zmniejszyć liczbę kodów? Czy zostałyby umieszczone w zmiennej?
Damainman

powinieneś także być w stanie używać stałych COOKIEPATHiCOOKIEDOMAIN zamiast samemu je
rozgryzać

korekta: COOKIE_DOMAIN
drzaus

11

Prawdopodobnie powinieneś użyć stałych COOIKEPATHi COOKIE_DOMAINistniejących od WP 3.0

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

7

Ach, zdałem sobie sprawę, że muszę to podłączyć init().

ROZWIĄZANIE: Utworzyłem funkcję w functions.php, która ustawia i sprawdza ciasteczko. aby działało to poprawnie, po zdefiniowaniu funkcji, poza funkcją wywołać to:

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

1

W ten sposób działało:

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

    }

Popraw formatowanie kodu.
Jevuska

Bardzo pomocna jest również niewielka treść na temat źródła.
bueltge
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.