如何在Wordpress中保留会话变量?

时间:2020-10-16 09:12:58

标签: php wordpress session

我一直在Wordpress页面模板中开发自定义仪表板,而从未调用过get_header或get_footer,而且我遇到了SESSION变量的问题。

似乎是随机保留/删除它们。

这是我非常简单的代码段:

<?php
session_start();

print_r($_SESSION);

$_SESSION['test'] = 'test';

?>

这个小片段应该在第一次尝试时打印一个空数组,然后在其后打印测试变量。

相反,它是以随机间隔打印变量的。通过刷新页面20倍〜,您可以看到变量,其余16个为空。

有办法防止这种情况吗?

1 个答案:

答案 0 :(得分:1)

要设置会话,必须确保未设置标头,并且还包括session_write_close(),否则WordPress中的某些环回功能将失败。所引用的答案均未提及有关session_write_close的小知识。

function dd_register_session(){
    if(!session_id() && !headers_sent()) {
        session_start();
        session_write_close();
    }
}
add_action('after_setup_theme','dd_register_session', 1);

add_action('wp_logout', 'end_session');
add_action('wp_login', 'end_session');
add_action('end_session_action', 'end_session');

function end_session() {
    session_destroy ();
}
相关问题