Установить cookie есть проблема с путем в WordPress - PullRequest
0 голосов
/ 01 мая 2019

Я пытался установить cookie на своем веб-сайте Wordpress.

Поэтому я пишу следующий код на header.php

if($_REQUEST['my-key'] !==""){
        $value=$_REQUEST['my-key'];
        setcookie('new_my_code', $value, time() + (86400));
    }

Но проблема в том, что этот cookie только настраиваетс соответствующей страницей, а не со всем доменом.

Например, если кто-то берет www.mywebsite.com / about /? My-key = 123

, тогда cookie устанавливается только на / about path.Я хочу установить его на целые страницы или весь домен, я перепробовал много вещей, ничего не работает

Try 1) header.php

    if($_REQUEST['my-key'] !==""){
        $value=$_REQUEST['my-key'];
        setcookie('new_my_code', $value, time() + (86400), '/');
    }



Try 2) header.php

    if($_REQUEST['my-key'] !==""){
        $value=$_REQUEST['my-key'];
        setcookie('new_my_code', $value, time() + (86400), '/', '.mywebsite.com');
    }



Try 3) header.php

    if($_REQUEST['my-key'] !==""){
        $value=$_REQUEST['my-key'];
        setcookie('new_my_code', $value, time() + (86400), COOKIEPATH, COOKIE_DOMAIN);
    }



Try 4) functions.php

    add_action( 'init', 'setting_my_first_cookie' );

    function setting_my_first_cookie() {
     if($_REQUEST['my-key'] !==""){
        $value=$_REQUEST['my-key'];
        setcookie('new_my_code', $value, time() + (86400), COOKIEPATH, COOKIE_DOMAIN);
    }
    }




5)

    $rp_path   = isset( $_SERVER['REQUEST_URI'] ) ? current( explode( '?', wp_unslash( $_SERVER['REQUEST_URI'] ) ) ) : '';
    setcookie('new_my_code', $value, time() + (86400),$rp_path, COOKIE_DOMAIN, is_ssl(), true);

Я устал от большинства вещей, которые я нашел в сети, чтобы заставить его работать.Но что бы я ни делал, cookie-файлы устанавливаются только на одной странице.Поэтому, пожалуйста, помогите

Есть ли какое-нибудь решение?Есть ли решение jQuery?

Ответы [ 2 ]

0 голосов
/ 05 мая 2019

Это проблема с WordPress, я думаю, причина в том, что заголовки уже отправлены, когда ваш скрипт достигает строки set-cookies!

, вы можете проверить это с помощью headers_sent (), если он возвращает trueпоэтому настройка файлов cookie не будет работать.

эта строка:

setcookie('new_my_code', $value, time() + (86400), '/');

должна установить файлы cookie для корневого веб-сайта

поместить их в functions.php следующим образом

function setting_my_first_cookie() {
   if($_REQUEST['my-key'] !==""){
      $value=$_REQUEST['my-key'];
      setcookie('new_my_code', $value, time() + (86400), '/');  
   }
}
add_action( 'init', 'setting_my_first_cookie' );

Надеюсь, это поможет.

0 голосов
/ 04 мая 2019

JS хорош для этого

document.cookie - это все, что вам нужно, но вы можете заключить его в функцию и выполнить

   function setCookie(cname, cvalue, exdays) {
      var d = new Date();
      d.setTime(d.getTime() + (exdays*24*60*60*1000));//set e
      var expires = "expires="+ d.toUTCString();
      document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
    }

пример из W3 https://www.w3schools.com/js/js_cookies.asp

тогда вам нужно запустить функцию для события // onpageload

document.addEventListener("DOMContentLoaded", function() {
setCookie("cookieName", "value", 10);
});

вы также можете попробовать динамически установить cookie с получением относительной постоянной ссылки

function get_relative_permalink( $url ) {
    $url = get_permalink();
    return str_replace( home_url(), "", $url );
}


   if($_REQUEST['my-key'] !==""){
        $value=$_REQUEST['my-key'];
        $path = get_relative_permalink();
        setcookie('new_my_code', $value, time() + (86400),$path, '.mywebsite.com');
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...