首页 > 解决方案 > 设置 cookie 在 wordpress 中的路径有问题

问题描述

我试图在我的 Wordpress 网站上设置 cookie。

所以我写了下面的代码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 路径上。我想在整个页面或整个域上设置它,我尝试了很多东西都没有用

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 解决方案?

标签: phpwordpresscookies

解决方案


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

推荐阅读