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_sessio
n为空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
}
所以我 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_sessio
n为空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
}