首页 文章

使用多站点的Wordpress ajax登录

提问于
浏览
0

我正在尝试使用wordpress multisite开发ajax登录,但由于某些原因我无法使其工作 . 我将凭据发送到我的脚本,似乎没问题,它会返回正确的用户数据 . 问题是当我使用钩子进行另一个ajax调用时没有'_nopriv'它返回false,因此用户没有登录,好像WP不记得用户 .

这是我的PHP代码:

add_action( 'wp_ajax_admin_login', 'admin_login' );
add_action( 'wp_ajax_nopriv_admin_login', 'admin_login' );
function admin_login() {
        $succ = true;
        $creds = array(
            'user_login'    => $_POST["user_login"],
            'user_password' => $_POST["user_pass"],
            'remember' => true
        );

        $user = wp_signon( $creds );

        if ( is_wp_error( $user ) ) {
            $succ = false;
            $user = "Login failed!";
        }
        else{
            do_action('wp_signon', $user->user_login);
            wp_set_auth_cookie($user->ID);
            wp_set_current_user($user->ID, $_POST["user_login"]);
        }
        echo json_encode(array('success' => $succ, 'currUser' => wp_get_current_user()));
        wp_die();
}

我用js中的/admin/wp-admin/admin-ajax.php来调用所需博客的网址 . 请帮忙!

1 回答

  • 0

    您需要在 wp_signon 中传递 $cred 数组 . 'user_login' 只包含用户的用户名 .

    do_action('wp_signon', $user->user_login);
    

    代替

    do_action('wp_signon', $creds);
    

相关问题