我尝试在我的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仅在路径上设置为/围绕路径。我想将其设置在整个页面或整个域中,我尝试了很多事情
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);
});
您也可以尝试通过获得相对永久链接
动态设置cookiefunction 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');
}
这是WordPress的问题,我猜是因为当您的脚本到达set-cookies line时已经发送标题!
您可以使用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' );
希望这个帮助。