説明: カスタムログインフォームを作成したい。これは私が持っているコードです:
問題: /wp-admin/admin-ajax.php 503 ()
試したこと: PHP:
function normal_login() {
if( !isset( $_POST ) ) {
return ;
}
$username = $_POST[ 'username' ];
$password = $_POST[ 'pass' ];
$remember_me = 'on' == $_POST[ 'remember_me' ] ? true : false;
$credentials = array(
'user_login' => $username,
'user_password' => $password,
'remember' => $remember_me
);
$user = wp_signon( $credentials, false );
if ( is_wp_error($user) ) {
echo $user->get_error_message();
}
else {
if ( !$remember_me ) {
wp_setcookie( $username, $password, false, '', '', $remember_me );
}
wp_redirect( '/' );
}
wp_die();
}
add_action( 'wp_ajax_normal_login','normal_login' );
add_action( 'wp_ajax_nopriv_normal_login','normal_login' );
JS:
jQuery(document).ready(function( $ ) {
$( '#login-form button[type="submit"]' ).on( 'click', function( e ) {
e.preventDefault();
var username = $( '#form-field-email-login' ).val();
var pass = $( '#form-field-password' ).val();
var remember_me = $( '#form-field-remember_me' ).is( ':checked' );
$.ajax( {
url: MY_AJAX_OBJ.MY_AJAX_URL,
type: 'post',
data: {
'action': 'normal_login',
'username': username,
'pass': pass,
'remember_me': remember_me,
},
success: function( response ) {
console.log( response );
},
error: function( textStatus ) {
console.log( textStatus );
}
} );
} );
} );
ありがとうございます。
いくつかの問題を確認できますが、問題を完全に解決する保証はありません-WP_DEBUG
およびWP_DEBUG_LOG
がwp-config.php
でtrue
として定義されていることを確認できますか-実行時のエラーはwp-content/debug.log
に表示されます。
! isset( $_POST )
がありますが、これはalways be false
になります。これは$_POST
スーパーグローバルが常に設定されているためです。 POSTされたデータ。代わりに、$_SERVER['REQUEST_METHOD'] !== 'POST'
を使用してくださいwp_setcookie
呼び出しの必要性が見当たりません。この関数は非推奨であり、wp_set_auth_cookie
のラッパーであり、wp_signon
によって呼び出され処理されます。window.location = responseData.redirectUrl
)