このチュートリアルに従ってカスタムajaxログインを作成しましたが、問題が発生しています。私はこのjqueryコードを使用してajaxリクエストを送信しています:
function ajaxLogin(form) {
$.ajax({
type: 'post',
dataType: 'html',
url: loginScript.ajaxurl,
data: "action=cb_register_login_submit&" + $(form).serialize(),
global: false,
success: function( msg ){
//location.reload( true ); // This could be nicer
handleLoginReturn(msg);
},
error: function(er) {
handleErrorReturn(er);
}
});
}
function handleLoginReturn(msg) {
console.log(msg);
}
ログインプロセスを処理するための次のPHP関数:
<?php
function cb_register_login_submit() {
$creds = array();
$creds['user_login'] = $_POST['username'];
$creds['user_password'] = $_POST['pwd'];
if ( isset( $_POST['remember'] ) ) {
$creds['remember'] = true;
}
$user = wp_signon( $creds, false );
if ( is_wp_error( $user ) ) {
echo 'error';
} else {
echo 'success';
}
die(0);
}
?>
したがって、問題は、間違ったログイン情報を入力すると、実際にはajax成功コールバックを介して文字列「error」が返されることですが、正しいログ情報を入力すると、ページ全体に相当するhtml(ワードプレスダッシュボードコード)は、文字列「success」ではなく、successコールバックを介して返されます。実際、文字列「success」は、successコールバックのどこにも返されないようです。
ここで何が問題なのか分かりますか?おそらくwp_signon関数が、私が気付いていない成功に関するデータを返していると思います。どんな助けでも大歓迎です!