php - 设置 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 解决方案?
解决方案
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');
}
推荐阅读
- c++ - 如何将csv中的单词分配给变量?
- javascript - 无法找出如何在输出末尾删除“未定义”
- swift - Swift - 预计解码数组
但找到了一本字典。”,基础错误:无 - c# - 如何在 c# webdriver selenium 测试中验证两个带空格的 int
- css - 2个不同高度的并排div对齐
- git - 使用 PCRE 正则表达式与 Grep 进行条件匹配与预期的条件部分不匹配
- javascript - 在 JSON API 中获取第一个数据
- ios - UIGestureRecognizer.State 是“可能的”,而不是“识别”每隔一次点击 MKMapView
- python-3.x - 将元组键和元组值的字典输出为纬度经度数据并绘制它
- flutter - 为什么 Flutter Image Cropper 插件仅在首次构建时崩溃?