Wordpress wp_signon() AJAX 调用中不起作用

zyfwsgd6  于 2023-06-21  发布在  WordPress
关注(0)|答案(3)|浏览(119)

我试图建立一个costum登录到WordPress的 AJAX 调用。我从PHP函数中删除了wp_signon(),我得到了正确的echo。但是当我添加wp_signon()时,它总是以HTML的形式返回整个登录页面。我不知道我做错了什么。无法登录。
救命啊!

js

$.ajax({
    method: 'POST',
    url: '/wp-admin/admin-ajax.php',
    dataType: 'json',
    data: {
        'action': 'getLoggedIn',
        'user_name': user_name,
        'user_password': user_password,
        'user_remember': user_remember
    },
    success: function(response) {

        if (response === 'ok') {
            window.location = '/app/';

        } 

    },
    error: function(){}
});

PHP

function getLoggedIn() {

    global $wpdb;

    // Check if users is already logged in
    if ( is_user_logged_in() ) {
        echo 'You are already logged in';
        die;
    }

    //We shall SQL escape all inputs
    $username = $wpdb->escape($_REQUEST['user_name']);
    $password = $wpdb->escape($_REQUEST['user_password']);
    $remember = $wpdb->escape($_REQUEST['user_remember']);

    $creds = array();
    $creds['user_login'] = $username;
    $creds['user_password'] = $password;
    $creds['remember'] = $remember;
    $user_signon = wp_signon( $creds, false );

    // Check if error
    if ( is_wp_error($user_signon)) {
        echo $user_verify->get_error_code();
        exit();
    } else {
        echo 'ok';
        exit;
    }

    die();
}

add_action('wp_ajax_getLoggedIn', 'getLoggedIn');
add_action('wp_ajax_nopriv_getLoggedIn', 'getLoggedIn');
rlcwz9us

rlcwz9us1#

问题不是wp_signon()函数。这是另一个WordPress操作,在用户登录失败后重定向页面。这是:

add_action( 'wp_login_failed', 'login_failed' );
kqlmhetl

kqlmhetl2#

尝试使某些自定义用户进行身份验证

add_filter('authenticate', function ($user, $username, $password) {
    if (empty($username) || empty($password)) {
        // get failed 
        do_action('wp_login_failed', $user);
    }
    return $user;
}, 10, 3);

// to handle even you can handle the error like
add_action('wp_login_failed', function ($username) {
    if (is_wp_error($username)) {
        // perform operation on error object for empty error
        return $username;
    }
});
jq6vz3qz

jq6vz3qz3#

我陷入了同样的境地。你是否删除了wp_login_failed操作,或者你是如何解决这个问题的?

相关问题