我正在尝试将当前页面的URL添加到名为“ $ visitedPages”的cookie中。作为参考,Wordpress函数'get_permalink()'返回URL。
在下面,var_dump返回'false'。而如果我将第2行的“ get_permalink()”替换为“ get_the_ID()”,它返回整数页面ID,则一切正常。
我尝试从url中剥离特殊字符,但它仍然返回'false',因此我怀疑此问题与从cookie中解码字符串有关。
// define the new value to add to the cookie
$currentPage = get_the_permalink(get_the_ID());
// if the cookie exists, read it and unserialize it. If not, create a blank array
if(isset($_COOKIE['visitedPages'])) {
$visitedPagesSerialised = $_COOKIE['visitedPages'];
$visitedPages = unserialize($visitedPagesSerialised)
var_dump($visitedPages);
} else {
$visitedPages = array();
}
// add the current page id to the array and serialize
$visitedPages[] = $currentPage;
$newCookieSerialized = serialize($visitedPages);
// save the cookie for 30 days
setcookie('visitedPages', $newCookieSerialized, time() + (86400 * 30), "/");
?>
答案 0 :(得分:0)
尝试获取ID,并将其添加到永久链接功能中。我假设当您说使用get_the_ID()时,这意味着您将用get ID函数替换永久链接函数。尝试串联使用它们。
$page_ID = get_the_ID();
$currentPage = get_the_permalink($page_ID);
答案 1 :(得分:0)
我需要在json_decode之前使用stripslashes()从cookie中删除转义的引号。为什么json_decode本身不这样做,我不知道。
这是工作代码。注意:最好使用完全相同的代码,但使用json_encode()和json_decode()而不是serialize()和unserialize(),因此我也进行了更改,但是原理是相同的。
// define the new value to add to the cookie
$currentPage = get_the_permalink(get_the_ID());
// if the cookie exists, read it and unserialize it. If not, create a blank array
if(isset($_COOKIE['visitedPages'])) {
$visitedPagesSerialised = stripslashes($_COOKIE['visitedPages']);
$visitedPages = json_decode($visitedPagesSerialised)
var_dump($visitedPages);
} else {
$visitedPages = array();
}
// add the current page id to the array and serialize
$visitedPages[] = $currentPage;
$newCookieSerialized = json_encode($visitedPages);
// save the cookie for 30 days
setcookie('visitedPages', $newCookieSerialized, time() + (86400 * 30), "/");