好吧,这真是绝望,我已经尝试了所有能找到的修复方法,但没有运气。 我在 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 会受到此行为的影响。
至少有两种可能的解决方案可以解决此问题:
删除在页面
<head>
中插入下一页/帖子的操作通过以下函数调用:remove_action('wp_head', 'adjacent_posts_rel_link_wp_head');
它可以添加到您的主题的
functions.php
文件。检查请求 header 以处理(或可能忽略)预取。所有预取请求都会发送到带有特殊 header 的服务器,如下所示:
X-moz: prefetch
您可以查找此 header 并以不同的方式处理请求。
关于wordpress - session 变量在 Firefox 和 Wordpress 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11851100/