Php wordpress中的Cookie集在特定页面中设置后将被删除
我试图使用functions.php中的钩子在wordpress中设置cookie,但是cookie值为空。如何设置从URL获取值的cookie($\u GET) (编辑)我只需要在特定页面设置此cookie,因此我将其包装在if语句中。cookie现在已正确设置。但是当我移动到另一个页面并尝试获取cookie时,它不再设置!你知道为什么会这样吗 (编辑2)我通过将cookie路径设置为“/”解决了这个问题Php wordpress中的Cookie集在特定页面中设置后将被删除,php,wordpress,cookies,Php,Wordpress,Cookies,我试图使用functions.php中的钩子在wordpress中设置cookie,但是cookie值为空。如何设置从URL获取值的cookie($\u GET) (编辑)我只需要在特定页面设置此cookie,因此我将其包装在if语句中。cookie现在已正确设置。但是当我移动到另一个页面并尝试获取cookie时,它不再设置!你知道为什么会这样吗 (编辑2)我通过将cookie路径设置为“/”解决了这个问题 函数集_cookie(){ 如果(是第页(“酒店”)){ $destinationTyp
函数集_cookie(){
如果(是第页(“酒店”)){
$destinationType='city';//'city';
$destinationCode=$_GET[“dcode”];/“lon”;
$checkinDate=$_GET[“date_in”];//date('2013-08-05');//'2006-05-10';
$checkoutDate=$\u GET[“date\u out”];
$date1=strotime($checkinDate);
$date2=strottime($checkoutDate);
$datediff=$date2-$date1;
$duration=floor($datediff/(60*60*24));
//创建搜索对象
$search=array();
$search[0]=$destinationType;
$search[1]=$destinationCode;
$search[2]=$checkinDate;
$search[3]=$checkoutDate;
$search[4]=$duration;
//创建房间对象
$packages=array();
$npack=intval($_GET['numpack']);
对于($j=0;$j<$npack;$j++){
$packages[$j][0]=$\u GET['rtype'。($j+1)];
$packages[$j][1]=1;//$_GET['nroom'($j+1)];
$packages[$j][2]=$_GET['cot'($j+1)];
如果($packages[$j][2]==null){
$packages[$j][2]=“0”;
}
对于($k=0;$k
如果cookie在那里,但它是空的,我建议检查json\u encode()
是否起作用。每当遇到不喜欢的字符时,它返回null
。检查的一个好方法是,必须在json\u encode()之后的某个地方调用它
您可以对您的问题进行全面的逐步检查:
我可以用一个简单的常量字符串设置cookie吗
我的$searchObject
是否包含我想要的内容
json\u encode()
是否正确生成json数据
在我的回答中,我假设前两个是可以的。如果cookie在那里,但它是空的,我建议检查json\u encode()
是否起作用。每当遇到不喜欢的字符时,它返回null
。检查的一个好方法是,必须在json\u encode()之后的某个地方调用它
您可以对您的问题进行全面的逐步检查:
我可以用一个简单的常量字符串设置cookie吗
我的$searchObject
是否包含我想要的内容
json\u encode()
是否正确生成json数据
在我的回答中,我假设前两个都可以。当我在php文件上直接使用此代码时,cookie是正确创建的,问题是我无法在页面模板上执行此操作,因为如果我在get_header()上方生成cookie
在style.css不破坏的情况下加载网站功能。这就是为什么要将其添加到get_标题挂钩中。但是你可以测试,如果你的函数真的被调用了,如果它被调用了,那么它应该可以工作。我现在可以设置cookie,但是我只需要在某个页面上设置这个cookie,所以我在我的函数中使用ifif(is_page('hotel')){//set cookies}
,并且cookie设置正确。但是当我移动到另一个页面时,cookie被删除了!知道为什么会发生这种情况吗?我已将cookie路径设置为“/”,感谢您的帮助。我假设您已将cookie(默认情况下)设置为实际路径,如果在转到其他页面时更改了路径,则该路径不可用。很高兴你成功了!当我在php文件上直接使用此代码时,cookie是正确创建的,问题是我无法在页面模板上执行此操作,因为如果我在get\u header()
函数上方生成cookie,则站点将在加载时不会被style.css破坏。这就是为什么要将其添加到get\u header钩子中。但是你可以测试,如果你的函数真的被调用了,如果它被调用了,那么它应该可以工作。我现在可以设置cookie,但是我只需要在某个页面上设置这个cookie,所以我在我的函数中使用ifif(is_page('hotel')){//set cookies}
,并且cookie设置正确。但是当我移动到另一个页面时,cookie被删除了!知道为什么会发生这种情况吗?我已将cookie路径设置为“/”,感谢您的帮助。我假设您已将cookie(默认情况下)设置为实际路径,如果在转到其他页面时更改了路径,则该路径不可用。很高兴你成功了!
function set_cookie(){
if(is_page('hotel')){
$destinationType = 'city'; //'city';
$destinationCode = $_GET["dcode"]; //'lon';
$checkinDate = $_GET["date_in"]; //date('2013-08-05'); // '2006-05-10';
$checkoutDate = $_GET["date_out"];
$date1 = strtotime($checkinDate);
$date2 = strtotime($checkoutDate);
$datediff = $date2 - $date1;
$duration = floor($datediff / (60 * 60 * 24));
//Create Search Object
$search = array();
$search[0] = $destinationType;
$search[1] = $destinationCode;
$search[2] = $checkinDate;
$search[3] = $checkoutDate;
$search[4] = $duration;
//Create Rooms Object
$packages = array();
$npack = intval($_GET['numpack']);
for ($j = 0; $j < $npack; $j++) {
$packages[$j][0] = $_GET['rtype' . ($j + 1)];
$packages[$j][1] = 1; //$_GET['nroom' . ($j + 1)];
$packages[$j][2] = $_GET['cot' . ($j + 1)];
if ($packages[$j][2] == null) {
$packages[$j][2] = '0';
}
for ($k = 0; $k < intval($_GET['children' . ($j + 1)]); $k++) {
$packages[$j][3][$k] = $_GET['achild' . ($j + 1) . '_' . ($k + 1)];
}
}
//Complete Search Object to cookie
$searchObject = array($search, $packages);
setcookie('searchobject', json_encode($searchObject), time() + 3600, "/");
}
}
add_action('get_header', 'set_cookie');