2015-10-06 94 views
1

我需要为Wordpress函数编写一些自定义代码,并且我需要能够删除以wp-postpass_开头的所有Cookie。我知道这可以用jQuery来完成,但我不确定如何在PHP中实现它。PHP删除cookie,以wp_postpass_开头

我试过谷歌搜索和搜索这里,但我一直没能找到任何符合我想要做的事情。

谢谢你在前进, 安迪

编辑: 对不起,我应该提到,WordPress的附加一个随机字符串到的wp-postpass_年底,因此为什么我需要找到与开始任何cookie wp-postpass_。道歉,清晨。

+1

是什么?你试过没,我们看一些代码。 – jmattheis

+0

我还没有尝试过任何东西,因为我不知道最佳方法。我在帖子中说过。 –

回答

2

因此,遍历所有cookie并检查是否包含wp_postpass_,然后删除cookie。

foreach($_COOKIE as $cookieKey => $cookieValue) { 
    if(strpos($cookieKey,'wp-postpass_') === 0) { 
     // remove the cookie 
     setcookie($cookieKey, null, -1); 
     unset($_COOKIE[$cookieKey]); 
    } 
} 
+1

只是好奇,这是否也会删除Cookie'test_wp_postpass_something'? –

+0

是的,因为他会检查“wp_postpass_”是否在字符串中,而不是在字符串的开头。 === 0而不是!==假 – Kulvar

+0

@TomHart you'r right编辑我的回答ty – jmattheis

1

如果您有机会获得$ _COOKIE超全局只是做

$past = time() - 86400; 
foreach($_COOKIE as $name => $value) { 
    if(strpos($name, 'wp-postpass_') === 0) { 
     setcookie($name, '', $past); 
     unset($_COOKIE[$name]); 
    } 
} 
+0

我试过了,但cookie仍然存在 –

+0

setcookie函数只是说“发送答案时从浏览器中删除它们”。如果您想从当前脚本调用中删除它们,则需要添加一些代码行。 我已经添加了一行以从当前上下文中删除。 – Kulvar

+0

试过了,它仍然存在?哈哈 –