WordPress 会话管理

更新于 2025年4月19日 WordPress 教程

WordPress 会话管理

我正在使用 WordPress 建立一个网站,我想利用它的session。 但我没有找到任何插件,甚至没有找到文档。 在我开始破解它之前有什么建议或参考吗?

注意:我问的是 WP 是否以及如何使用标准 PHP session本身,而不是如何添加 PHP session,例如使用 session_start()。 显然,WP 维护的任何状态都是通过其他方式实现的。 所以如果我想使用 PHP session,我需要完全自己添加和维护它,使用类似线程中的技术。

谢谢大家!

解决方案

为了使用会话的能力而修改WP Core文件是一个非常糟糕的主意。 我发现的最好方法是从init动作挂钩调用session_start()

function kana_init_session() {
  session_start();
}

add_action('init', 'kana_init_session', 1);

你可以把它放在你的主题的functions.php文件中。

WordPress 似乎没有调用session_start()因为它想要无状态,如果register_globals被定义,它会自动破坏你的$_SESSION

考虑使用WordPress Transient API

使用 Transient API 存储的值对所有用户都是可见的,而不仅仅是当前用户,根据用于检索瞬态的唯一标识符,您可以为每个用户分配一个唯一标识符,本质上使瞬态表现得非常像会话。

进一步的考虑:

  • 根据用户设置的对象缓存等,瞬态可能并不总是存储在数据库中(例如 memcached),对会话使用瞬态可能意味着数据可能会变得庞大并迅速填满内存(在使用 memcached 时)。
  • 此外,似乎 WP 不会对瞬态进行自动垃圾收集

对于我需要做的事情,最佳答案包括:

  1. 要允许 wordpress 的 cookie 跨子域持续存在,请安装 Root Cookie插件
  2. sub1.domain.com有 wordpress; sub2.domain.com是另一个站点。 我从另一个站点 ( sub2 ) 读取 cookie 以识别用户是谁以及用户是否已登录。

我的饼干如下:

[wordpress_909bb230b32f5f0473202684d863b2e0] => mshaffer|1255298821|d0249fced9c323835c5bf7e84ad3ffea
[wordpress_logged_in_909bb230b32f5f0473202684d863b2e0] => mshaffer|1255298821|56e9c19541ecb596a1fa0995da935700

使用 PHP,我可以遍历 cookie,解析key=>value对。 这些 cookie 让我知道[mshaffer]有一个存储在 wordpress 上的 cookie,并且也被认证为logged_in 。 cookie 的有效期为1255298821

sub2 中,我可以查询 wordpress 的数据库并获取用户信息:

SELECT * FROM `wp_users` WHERE user_login = 'mshaffer' ...从这个查询中获取user_id , user_email

SELECT * FROM `wp_usermeta` WHERE user_id = '$user_id' ...从 wp 中获取大量其他数据

有了这些信息,我就可以添加到我的sub2会话变量/cookie 中,并对数据执行我想要的操作。 我可以识别我是否已登录,以及我的用户名……这让我可以获取许多不同的数据。 我现在可以在sub2.domain.com 中使用 WordPress 身份验证并相应地重定向。

WordPress 似乎不使用任何会话。

最好的方法是使用它提供的动作钩子。

您是否检查过此处的解决方案,这可能适用于此处,并且方法简单。

在这种情况下,在wp_loaded上使用session_start()挂钩函数似乎有效。

将此代码放在 wp-config.php 的第一行:

if (!session_id()) {
    session_start();
}

将此代码放在主题的 header.php 中的第一行:

session_start();

然后它将维护所有会话变量。

如果您想使用自己的会话值, WordPress 确实支持它

您需要在wp-config.php的顶部添加以下几行

if (!session_id()) {
    session_start();
}

然后在header.php的顶部添加以下行

session_start();

你可能还喜欢下面这些文章

Auditor:WordPress 文章内容安全审核插件Auditor:WordPress 文章内容安全审核插件

本插件可以识别文章中的敏感信息,如果文章存在敏感信息,文章将会自动移动到安全的敏感隔离区,禁止任何形式的前台访问。

WordPress小说主题wpnovo,支持多语言、付费阅读、VIP会员功能的精美小说模板WordPress小说主题wpnovo,支持多语言、付费阅读、VIP会员功能的精美小说模板

//demo.imwpweb.com/wpnovo/多设备支持主题支持PC和移动端界面,独立设置,互不干扰。移动端首页(右)图:小说页面PC端和移动端的展示付费订阅主题支持付费订阅功能,支持付费单章订阅、整本小说订阅模式。

WordPress自动内链插件 WPKAL ,网站全自动增加锚链接必备插件WordPress自动内链插件 WPKAL ,网站全自动增加锚链接必备插件

什么是内链内链,顾名思义就是在同一网站域名下的内容页面之间的互相链接(自己网站的内容链接到自己网站的内部页面,也称之为站内链接)。自动内链工作原理简单来说,我们设定一些词表以及词表对应的链接,比如词是wordpress插件,链接是http

WordPress 敏感词违禁词屏蔽插件 WPWJC 介绍与下载WordPress 敏感词违禁词屏蔽插件 WPWJC 介绍与下载

这款插件的核心功能就是一点:找出文章中的违禁词、敏感词等措辞不当的词语,替换成你设置的更合适的词或者直接替换“*”号。请注意,需要同时下载站长工具箱和违禁词屏蔽插件,安装插件时也需要两个插件同时安装。

WordPress 文章自动配图、缩略图插件 WPAC 介绍与下载WordPress 文章自动配图、缩略图插件 WPAC 介绍与下载

2、自动生成的图片并非真实在磁盘中的图片,而是动态生成的,如果保存到磁盘会占用大量空间,这个空间没必要浪费,因此修改主题代码,直接将缩略图的地址改为wpac自动生成的缩略图地址是一个非常好的方案。

WordPress 相关文章插件 wprecWordPress 相关文章插件 wprec

wprec利用相似度算法计算每篇文章之间的相似度,找到与当前文章最相似的一些文章,展现在文章底部作为相关文章。我们知道,相关推荐插件推荐的原理是根据当前文章的特征(文章的高权重标签),从文章库中召回相关文章,再根据相关性评分,最后选出To