Description: Je voudrais créer un formulaire de connexion personnalisé: nom d'utilisateur, mot de passe et champ de rappel. C'est le code que j'ai:
Problème: /wp-admin/admin-ajax.php 503 ()
Ce que j'ai essayé: 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 );
}
} );
} );
} );
Merci!
Quelques problèmes que je vois mais que rien ne garantit que cela résoudra entièrement le (s) problème (s) - pouvez-vous vous assurer que WP_DEBUG
et WP_DEBUG_LOG
sont définis comme étant true
dans votre wp-config.php
- toutes les erreurs survenues pendant l'exécution devraient ensuite apparaître dans wp-content/debug.log
.
! isset( $_POST )
est conditionnel à la vérification de la demande, mais ceci toujours sera false
car le $_POST
superglobal est toujours défini - il est simplement vide à moins qu'il y ait des données POST '. Utilisez plutôt $_SERVER['REQUEST_METHOD'] !== 'POST'
wp_setcookie
. La fonction est obsolète et n’est qu’un wrapper pour wp_set_auth_cookie
, qui est appelé & manipulé par wp_signon
de toute façon.window.location = responseData.redirectUrl
).