【问题标题】:How do you use session variables in wordpress?您如何在 wordpress 中使用会话变量?
【发布时间】:2014-07-11 18:45:23
【问题描述】:

我有以下插件:http://wordpress.org/support/plugin/wp-session-manager

我不知道如何在 WordPress 中使用会话变量。根据我的阅读理解,应该是这样使用的:

我在第一页(第 1 页)上有以下内容:

global $wp_session;
$wp_session['loggedIn'] = 15;

echo $wp_session['loggedIn'];

在第一页上,会话变量正在工作,但在第二页上,会话变量不工作。 谁能建议我哪里出错了?

谢谢。

【问题讨论】:

  • WordPress 试图成为 stateless,因此实际上在部分加载期间 wipes $_SESSION 变量。我已经学会在 WP 主题和插件中使用 cookie。
  • 谢谢,我在某处看到过,但目前没有时间学习使用 cookie。所以只使用会话管理器插件来代替

标签: php wordpress session variables


【解决方案1】:

替换:

global $wp_session;

与:

$wp_session = WP_Session::get_instance();

确保在尝试回显第 2 页上的变量之前添加 $wp_session = WP_Session::get_instance();

【讨论】:

  • 感谢它完全符合我的要求!你知道如何结束/销毁 wp_session 吗?例如,我使用它来登录用户,但我如何注销并“清空”变量?谢谢:)
  • 我想我可以将它设置为“”,然后基于我的 if 语句来查看用户是否登录。如果它 = "" 则显示登录页面
  • 如果有机会,请在此处查看我关于此插件的帖子。 stackoverflow.com/questions/23878223/…谢谢
  • 这太棒了。谢谢你,内森 :-)
【解决方案2】:
  1. function.php文件中添加以下代码
函数 register_my_session(){ 如果(!session_id()){ session_start(); } } add_action('init', 'register_my_session');
  1. 之后,您可以将值存储在会话变量中,例如
$_SESSION['某事'] = $xyz

【讨论】:

    【解决方案3】:

    介绍 WP_Session:

    例子:

    global $wp_session;
    
    $wp_session['user_name'] = 'User Name'; // A string
    
    $wp_session['user_contact'] = array( 'email' => 'user@name.com' );// An array
    
    $wp_session['user_obj'] = new WP_User( 1 ); // An object
    

    Wordpress 会话功能:

    1. wp_session_cache_expire() – 获取会话过期时间
    2. wp_session_commit() – 将会话数据写入瞬态
    3. wp_session_decode() – 将数据从序列化字符串加载到会话中
    4. wp_session_encode() – 将会话数据写入序列化字符串
    5. wp_session_regenerate_id() – 将当前会话的 ID 更改为新的随机 ID
    6. wp_session_start() – 启动会话并根据用户的 cookie 加载数据
    7. wp_session_status() – 检查当前会话的状态
    8. wp_session_unset() – 清除当前会话中的所有变量
    9. wp_session_write_close() – 写入会话数据并结束会话。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 2017-04-06
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多