Налаштування власних файлів cookie в Wordpress


13

Я намагаюся встановити файли cookie для перенаправлення повернення користувачів на мою конкретну сторінку в межах мого сайту Wordpress.

Мені хотілося б поради з цими двома речами:

  1. Де у файлах Wordpress php слід перевірити файли cookie перед завантаженням будь-якого вмісту для обробки переадресації? Чи є хороший файл, в якому він повинен існувати над іншими?
  2. Як правильно встановити файл cookie в Wordpress? setcookie('cookie_name', 'cookie_value', time()+4000);схоже, не зберігає файли cookie в моїй системі.

Ах, зрозумів, що мені потрібно підключити це до init (). РІШЕННЯ: Я створив функцію в function.php, яка встановлювала б і перевіряла файл cookie. щоб це працювало належним чином, після визначення функції, поза функцією викликайте це: addgery ('init', 'function-name');

4
Вам дозволяється відповісти на власне запитання ...
40XUserNotFound

2
Насправді це прямо заохочується. Будь ласка, відповідайте самі. Я також надсилаю це в WordPress.SE, оскільки там це здається більш підходящим.

Спасибі хлопці - я не зрозумів, що є область Wordpress. І дякую за пораду, щоб відповісти собі :) Оцінений, +1.
Atticus

Відповіді:


17

1 - Ви можете перевірити файли cookie та зробити переспрямування за допомогою гачків, які викликаються перед будь-яким виходом, як-от гачок '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 - Найкращий спосіб встановити файли cookie - це використання гачка "init" таким чином:

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

?>

Це більш послідовно, якщо у вас є блог на веб-сайті www.example.com/blog , файли cookie не будуть доступні на

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

Оновлення

ви також повинні мати можливість використовувати константи COOKIE_PATH та COOKIEDOMAIN, а не з'ясовувати їх самі, що я щойно помітив у відповіді Андре Р Коля - drzaus


Як ви ставите кілька змінних, наприклад Ім'я, прізвище, Random1, Random2, а не лише змінну my_cookie_1.?
Damainman

1
Просто додайте більшеsetcookie()
Nabil Kadimi

О, я не знав, що файли cookie містять лише одну змінну на печиво. Чи є спосіб встановити кілька файлів cookie, не потребуючи часу та коду URL, щоб він становив менше коду? Чи будуть вони поміщені в змінну?
Damainman

ви також повинні мати можливість використовувати COOKIEPATHі COOKIEDOMAINконстанти, а не з'ясовувати їх самі, що я щойно помітив у відповіді Андре Р Коля
drzaus

виправлення: COOKIE_DOMAIN
drzaus

11

Ймовірно, ви повинні використовувати константи COOIKEPATHі COOKIE_DOMAIN, що існують з WP 3.0

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

7

Ах, зрозумів, що мені потрібно зачепити це init().

РІШЕННЯ: Я створив функцію в function.php, яка встановлювала б і перевіряла файл cookie. щоб це працювало належним чином, після визначення функції поза функцією викликайте це:

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

1

Цей спосіб спрацював:

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

    }

Виправте форматування коду.
Євуська

Також невеликий вміст про джерело справді корисний.
Бульдж
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.