在if语句中取消设置会话。如果语句被忽略

时间:2017-01-30 13:19:53

标签: php wordpress session

我在woprdpress中遇到了一个带有$ _SESSION的奇怪问题,即我想清除所有页面上的会话变量,除了自定义帖子类型的单页 - 产品。

我使用条件:

if(!is_singular('product')) {
    unset($_SESSION);
}

问题是会话在所有页面上都被清除,包括产品单页面。 if语句只是被忽略了。我尝试将它放在template_redirect挂钩中或只放在header.php文件中,这没关系。

我使用动作钩子启动会话:

function register_my_session() {
    if( !session_id() ) {
        session_start();
    }
}
add_action('template_redirect', 'register_my_session', 9);

任何帮助将不胜感激。 提前致谢 RAF

1 个答案:

答案 0 :(得分:0)

  

是的,我的意思是我想在用户使用时填写unset_session()   产品单页除外的页面

为什么不在产品页面以外的所有页面上翻转并触发?

if (!is_product())
    unset($_SESSION);

过滤掉管理员:

if (!is_product() && !current_user_can('manage_options'))
    unset($_SESSION);

仅限单页而非产品而非管理员:

if (is_single() && !is_product() && !current_user_can('manage_options'))
    unset($_SESSION);