WordpressにAJAX呼び出しでコスチュームログインを構築しようとしています。私は右のエコーを取得するPHP関数からwp_signon()を削除します。しかし、wp_signon()を追加すると、常にHTMLでログインページ全体が返されます。私は何が間違っているのか分かりません。そして、ログインを機能させることができません。Wordpress wp_signon()がajax呼び出しで動作しない
助けてください!
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');
はいリダイレクト操作を削除したとき、すべてが機能しました – user2673664