Wordpress wp_signon()在ajax调用中不起作用

时间:2017-11-27 10:11:27

标签: javascript php ajax wordpress

我正在尝试在AJAX调用中构建一个登录Wordpress的costum。我从PHP函数中删除wp_signon()我得到了正确的回声。但后来我添加了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');

2 个答案:

答案 0 :(得分:1)

问题不在于wp_signon()功能。这是另一个Wordpress操作,在用户登录失败后重定向页面。这样:

add_action( 'wp_login_failed', 'login_failed' );

答案 1 :(得分:0)

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