我正在使用 Wordpress 建立一个网站,我想利用它的会话。但我没有找到任何插件,甚至没有文档。在我开始破解之前有什么建议或参考吗?
注意:我问的是 WP 是否以及如何使用标准 PHP 会话本身,而不是如何添加 PHP 会话,例如使用 session_start()。显然,WP 维护的任何状态都是通过其他方式完成的。因此,如果我想使用 PHP 会话,我需要完全自己添加和维护它,使用线程中的技术。
谢谢大家!
我正在使用 Wordpress 建立一个网站,我想利用它的会话。但我没有找到任何插件,甚至没有文档。在我开始破解之前有什么建议或参考吗?
注意:我问的是 WP 是否以及如何使用标准 PHP 会话本身,而不是如何添加 PHP 会话,例如使用 session_start()。显然,WP 维护的任何状态都是通过其他方式完成的。因此,如果我想使用 PHP 会话,我需要完全自己添加和维护它,使用线程中的技术。
谢谢大家!
修改WP Core文件以使用会话的能力是一个非常糟糕的主意。我发现最好的方法是调用session_start()
frominit
动作钩子。
function kana_init_session() {
session_start();
}
add_action('init', 'kana_init_session', 1);
你可以把它放在functions.php
你的主题文件中。
详细文章可以在这里找到:http ://www.kanasolution.com/2011/01/session-variable-in-wordpress/
WordPress 似乎没有调用session_start()
,因为它希望是无状态的,如果register_globals
已定义,它会自动销毁您的$_SESSION
对于我需要做的事情,最好的答案包括:
我的cookies如下:
[wordpress_909bb230b32f5f0473202684d863b2e0] => mshaffer|1255298821|d0249fced9c323835c5bf7e84ad3ffea
[wordpress_logged_in_909bb230b32f5f0473202684d863b2e0] => mshaffer|1255298821|56e9c19541ecb596a1fa0995da935700
使用 PHP,我可以遍历 cookie,解析这些key=>value
对。这些 cookie 让我知道[mshaffer]
有一个 cookie 存储在 wordpress 上,并且被认证为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 身份验证并相应地重定向。
蒙特
{X:
考虑使用WordPress 瞬态 API
使用 Transient API 存储的值对所有用户可见,而不仅仅是当前用户,这取决于用于检索瞬态的唯一标识符,您可以为每个用户分配一个唯一标识符,这实际上导致瞬态的行为非常像会话。
进一步的考虑:
根据使用对象缓存等的用户设置,瞬态可能并不总是存储在数据库中(例如 memcached),对会话使用瞬态可能意味着数据会变得庞大并快速填满内存(在使用 memcached 时)。
此外,似乎 WP 不会对瞬态进行自动垃圾收集: https ://wordpress.stackexchange.com/questions/6602/are-transients-garbage-collected
Wordpress 似乎没有使用任何会话。
最好的方法是使用它提供的动作钩子。
将此代码放在 wp-config.php 的第一行:
if (!session_id()) {
session_start();
}
将此代码放在主题的 header.php 第一行:
session_start();
然后它将维护所有会话变量。
你检查过这里的解决方案吗,这可能适用于这里,而且很简单
http://thedigilife.com/wordpress-how-to-set-session-custom-variable-while-login/
session_start()
在这种情况下,使用on挂钩函数wp_loaded
似乎有效。
如果您想使用自己的会话值,Wordpress 确实支持它。
您需要在顶部添加以下行wp-config.php
if (!session_id()) {
session_start();
}
然后在顶部添加以下行header.php
session_start();