我正在尝试在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');
答案 0 :(得分:1)
问题不在于wp_signon()
功能。这是另一个Wordpress操作,在用户登录失败后重定向页面。这样:
add_action( 'wp_login_failed', 'login_failed' );
答案 1 :(得分:0)
我陷入了同样的境地。你删除了wp_login_failed操作,或者你是如何解决这个问题的?