wordpress - session 变量在 Firefox 和 Wordpress 中不起作用

标签 wordpress session-variables

好吧,这真是绝望,我已经尝试了所有能找到的修复方法,但没有运气。 我在 WordPress 中使用 session 变量,它在除 Firefox 之外的每个浏览器中都可以正常工作。我已经清除了缓存、cookie、以安全模式启动等,但没有任何乐趣。 Cookie 已启用,我也在不同的电脑上尝试过。

我在主题函数文件中启动 session ,如下所示:

function myStartSession() {
if(!session_id()) {
    session_start();
 }
}
add_action('init', 'myStartSession', 1);

然后在我的个人页面模板上创建 session 变量,如下所示: $_SESSION['hq'] = 1;

我可以确认 sessionid 在每个浏览器中都保持不变,并且可以正常工作(包括 Firefox),但是在 FF 中, session 变量没有正确地从一个页面传递到另一个页面,结果是不可预测的。

非常欢迎任何解决方案/建议。

最佳答案

这不是一个全新的问题,但由于我正在寻找解决方案并来到这里,我会回答它,也许可以帮助其他程序员。

我开发的 WordPress 主题也遇到了类似的问题,我在 StackExchange 的这篇文章中找到了解决方案:https://wordpress.stackexchange.com/questions/40271/2-different-post-ids-for-single-page-load-only-in-firefox

由于 Firefox 的预取,下一篇文章/页面会在后台加载,并且 session 会受到此行为的影响。

至少有两种可能的解决方案可以解决此问题:

  1. 删除在页面 <head> 中插入下一页/帖子的操作通过以下函数调用:

    remove_action('wp_head', 'adjacent_posts_rel_link_wp_head');
    

    它可以添加到您的主题的 functions.php文件。

  2. 检查请求 header 以处理(或可能忽略)预取。所有预取请求都会发送到带有特殊 header 的服务器,如下所示:

    X-moz: prefetch
    

    您可以查找此 header 并以不同的方式处理请求。

关于wordpress - session 变量在 Firefox 和 Wordpress 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11851100/

相关文章:

javascript - 为什么 wp_enqueue_style 在这里不起作用?

php - Wordpress WP_Query 具有多个元值的元键

php - $_SESSION 的最大大小是多少?

javascript - NodeJS 变量 session 未定义

php - 使用 PHP 伪造 URL 中的路径部分?

php - 变量不会存储在 session 中

css - 免费 wordpress.com 网站上的全 Angular 页面

menu - WordPress 中导航菜单的自定义

asp.net - 使用自定义成员资格提供程序时,在 ASP.NET 中推荐的用户特定持久变量存储方法是什么?

php - MYSQL:一列上存在多个 "contradicting"条件