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.