我有一个WordPress多用户站点,注册用户可以在主站点的前端(用户仪表板界面)保存一些元信息。要保存此信息,请使用看起来像这样的ajax调用
jQuery.ajax({
type: 'POST',
url: ajaxurl,
data: {
'action' : 'function_name',
'pay_tip' : pay_tip,
},
success: function (data) {
console.log(data);
},
error: function (errorThrown) {
console.log(errorThrown);
}
});//end ajax
php动作
add_action( 'wp_ajax_function_name', 'function_name' );
add_action( 'wp_ajax_nopriv_function_name', 'function_name' ); // this will be removed since the action is only for logged in users
function function_name(){
$current_user = wp_get_current_user();
$userID = $current_user->ID;
$user_login = $current_user->user_login;
print_r($current_user);
if ( !is_user_logged_in() ) {
exit('no session');
}
...
问题是在php函数中,用户会话丢失,而wordpress没有考虑用户登录。
在用户仪表板(保存按钮所在的页面)中,wp_get_current_user()返回正确的信息,但在进行ajax调用时,这些数据会以某种方式丢失。
js中的ajaxurl变量是https://www.website.com/wp-admin/admin-ajax.php 还有print get_current_blog_id();在用户仪表板上,ajax php函数返回1 - 主博客的id。
谢谢