我试图在我的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解决方案?
答案 0 :(得分:0)
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=/";
}
第3周的示例 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');
}
答案 1 :(得分:-1)
这是WordPress的问题,我想原因是因为当脚本到达set-cookies行时,标题已经发送了!
如果返回true,则可以使用headers_sent()进行检查,以便设置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' );
希望获得帮助。