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
使用 Transient API 存储的值对所有用户都是可见的,而不仅仅是当前用户,根据用于检索瞬态的唯一标识符,您可以为每个用户分配一个唯一标识符,本质上使瞬态表现得非常像会话。
进一步的考虑:
- 根据用户设置的对象缓存等,瞬态可能并不总是存储在数据库中(例如 memcached),对会话使用瞬态可能意味着数据可能会变得庞大并迅速填满内存(在使用 memcached 时)。
- 此外,似乎 WP 不会对瞬态进行自动垃圾收集
对于我需要做的事情,最佳答案包括:
- 要允许 wordpress 的 cookie 跨子域持续存在,请安装 Root Cookie插件。
- 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();
你可能还喜欢下面这些文章

在本章中,我们将研究如何在WordPress中编辑用户。以下是在WordPress中编辑用户的简单步骤。步骤(3) – 点击如下屏幕中所示的Edit选项来编辑用户。步骤(4) – 显示编辑用户页面。

ID, ‘last_login’, date(‘Y-m-d H:i:s’));function get_last_login($user_id) { $last_login = get_user_meta($user_id, ‘last

//developer.wordpress.org/rest-api/using-the-rest-api/frequently-asked-questions/#can-i-disable-the-rest-接口据此,Wordpress。

网站获取流量需要依靠长尾词,但我们不可能把所有的长尾词都堆在标题或者正文中。现在我开发了一款能自动匹配长尾词的插件wpkws,他的功能是找到和文章相似的长尾词,自动添加为标签。

有很多主题会用到id信息,但是查看id的方式有些麻烦,这里提供一个代码来查看id。 add_filter(“manage_${taxonomy}_custom_column”, ‘ssid_return_value’, 10, 3);

imwpnovel,极佳的wordpress单本小说主题不仅仅是主题本身,我们还希望使用者能够使用这款主题为自己带来更多的收入,imwpnovel在最合适的位置均有广告位,在不影响用户体验的同时,给使用者带来更多的广告收入。未使用缓存的时候,

当用户注册或者忘记密码获取新密码时WordPress会自动向用户邮箱中发送一个验证链接地址,用户通过打开这个链接设置密码,不过经常发现这个链接直接打开后,并不是设置密码的正确链接。login=” . rawurlencode( $user-&