0

このチュートリアルに従ってカスタム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関数が、私が気付いていない成功に関するデータを返していると思います。どんな助けでも大歓迎です!

4

1 に答える 1

0

私は解決策を見つけました:

ajax呼び出しが成功すると、リダイレクトページのhtmlを送信していたように見える「LoginLogoutRedirect」プラグインを使用していました。プラグインを無効にすると、すべてが見事に機能しています。

于 2012-08-20T06:19:04.047 に答える