WP_Session 插件不工作

WP_Session plugin not working

所以我 Google 读了自己的书,但找不到解决这个问题的方法。

我正在使用 WP Session Manager plugin 来使用会话数据。我们需要一个非常具体的社交登录和注册流程。我们在 www.domain.com 有一个 Wordpress 站点(版本 4.2.1),我们的 Web 应用程序位于 app.domain.com。现在,如果您在 WP 站点上登录或注册,您将在应用程序(而不是 WP 站点)上登录/注册。

我正在为此编写一个自定义插件,因为那里的选项不能满足我的需求。

我的问题在于访问函数之间的会话数据。我的流程如下(以 Google 为例):

用户点击Google+登录,弹出Google认证弹出,用户授权,回调url为www.domain.com/google_callback。页面 google_callback 有一个名为 google_callback 的短代码,然后调用该函数。该函数中的所有内容均有效,我可以正确取回数据。剥离所有 Google 数据处理后,该函数如下所示:

// social.php plugin file
function google_callback() {
    $wp_session = WP_Session::get_instance();
    // Get Google data all happens here...
    $user['name']     = $userObj->givenName;
    $user['surname']  = $userObj->familyName;
    $user['email']    = $userObj->email;
    $user['verified'] = $userObj->verifiedEmail;
    $wp_session['registeruser'] = $user;
    $wp_session['registertype'] = 'Google';
    wp_redirect(home_url('social-register'));
}

现在,如果我 var_dump($wp_session); 就在 wp_redirect 之前,我会正确获取所有 Google 数据。

social-register 页面有一个短代码,可以构建一个表单并用检索到的数据预先填充它。这是那个函数:

// theme functions.php file
function build_registerform($args,$content=null) {
    $wp_session = WP_Session::get_instance();
    var_dump($wp_session);
}

此时var_dump$wp_session为空WP_Session object

我试过将所有 $wp_session = WP_Session::get_instance(); 更改为 global $wp_session 但没有成功。

有人知道我做错了什么吗?

尝试检查您的会话管理器插件是否正常工作。

激活您的插件并将此代码添加到您的 functions.php 文件

function test_session () {
 global $wp_session;
 $wp_session = WP_Session::get_instance();
}
add_action( 'init', 'test_session' );

然后将此代码添加到您的 header.php 文件中

<?php
global $wp_session;
$wp_session['test'] = "test";
var_dump($wp_session);
?>

好吧,我认为在您的 social.php 中,您首先必须将 $wp_session 设置为全局函数 。所以在 social.php 的顶部,包含脚本之后。添加这个

global $wp_session = WP_Session::get_instance();

然后稍后在 google_callback 函数中使用

global $wp_session;

与您的主题相似functions.php

function build_registerform($args,$content=null) {
    global $wp_session;
    var_dump($wp_session); //session is empty right now
}