我一直在Wordpress页面模板中开发自定义仪表板,而从未调用过get_header或get_footer,而且我遇到了SESSION变量的问题。
似乎是随机保留/删除它们。
这是我非常简单的代码段:
<?php
session_start();
print_r($_SESSION);
$_SESSION['test'] = 'test';
?>
这个小片段应该在第一次尝试时打印一个空数组,然后在其后打印测试变量。
相反,它是以随机间隔打印变量的。通过刷新页面20倍〜,您可以看到变量,其余16个为空。
有办法防止这种情况吗?
答案 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 ();
}