【发布时间】:2022-01-21 01:52:57
【问题描述】:
我正在尝试在不使用 php $_SESSION 变量且不让用户登录网站的情况下创建会话。我创建了一个表单,一旦访客/访客用户提交表单,我想将他的数据存储在会话变量中。我发现在 wordpress 中使用 $_SESSION 不是一个好习惯。我查看了一些教程,发现使用WP_Session。这似乎也不适合我。
这是我正在使用的代码:
global $wp_session;
$wp_session['visitorInfo'] = 'some_text_here';
当我在另一个页面上请求它时,它什么也没给我(空白)。即使我尝试打印$wp_session 变量,它也会给我空白。我也尝试使用$wp_session = WP_Session::get_instance();,但它返回错误Class WP_Session not found 可能是因为我正在为调用此方法的类使用命名空间。
我也试过
add_action('init',array($this,'start_session'));
public function start_session(){
if (!session_id()) { session_start();}
}
但它不起作用。
我的网站托管在 wpengine 上,它不允许创建自定义 cookie。我试图弄清楚当用户登录网站时 wordpress 如何创建他们的会话。过去 2 天我一直在寻找解决方案,但没有找到任何可行的解决方案。
您能否建议我如何实现这一目标。
提前致谢!
【问题讨论】:
-
使用
init钩子并在session_start()为我工作之前检查session_status() === PHP_SESSION_NONE。如果它不适合您,错误详情是什么? -
WP_Session类来自WP Session manager plugin。它不是 WordPress 核心类。所以,你需要有这个插件才能访问这个类。