当您登录受密码保护的页面时,WordPress会设置一个类似于wp-postpass_ hash 的cookie。
这个cookie似乎永远存在。我希望能够为用户提供“注销”链接。如果我不知道哈希,有没有办法找到并删除这个特定的cookie?也许有办法通过'wp-postpass'找到它来获取cookie?
我见过其他改变WordPress核心文件的解决方案来改变cookie的过期日期,但是当有更新时这不会持续。也许我可以编写一个函数来改变这个特定cookie的到期时间?
任何提示?谢谢!
答案 0 :(得分:3)
如果您不知道哈希,那没关系。实际上,cookie哈希是博客网址的MD5。如果您想知道您的网站cookie哈希,请尝试以下方法:
<?php
$url="http://www.your-blog.com";
$COOKIEHASH = md5($url);
//Now, your cookie will be,
echo 'wp-postpass_' . $COOKIEHASH; // Name of the cookie of your blog
//Now, you can delete it whenever you want. :)
//setting your cookie
//setcookie('wp-postpass_' . $COOKIEHASH, $password, time() + 864000, COOKIEPATH);
?>
答案 1 :(得分:0)
您是否尝试向用户提供wp_logout_url()
的链接,而不是为自己编程?
答案 2 :(得分:0)
我最终这样做了:
<?php
// turn all cookies into string
$cookie_string = implode(array_keys($_COOKIE));
// find position of desired cookie
$pos = strpos($cookie_string,'wp-postpass');
// extract string starting at $pos
$pass_cookie = substr($cookie_string,$pos);
// set cookie to expire on browser close
setcookie($pass_cookie,'',0);
?>
这可能不是最优雅的解决方案,特别是因为它要求wp-postpass cookie在数组中排在最后。
答案 3 :(得分:0)
<?php
$pass_cookie='';
foreach($_COOKIE as $key=>$value){
if(!strncmp($key,"wp-postpass_",12)){
$pass_cookie = $key;
break;
}
}
if($pass_cookie){
setcookie($pass_cookie,'',0);
}
?>
我宁愿使用类似上面的内容 - 它不依赖于wp_postpass cookie的位置