我有一个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 .

谢谢