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



我在 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);

任何帮助将不胜感激。提前致谢英国皇家空军

的,我的意思是我想在用户全部打开时过滤 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);

最新更新