Mise à jour: l'erreur était une simple faute de frappe, ignorez cette question.
J'utilise le plugin de validation jQuery pour valider certains formulaires. Lorsque j'essaie de valider quelque chose à l'aide de la fonction is_user_logged_in()
, j'obtiens l'erreur suivante en PHP:
Erreur fatale PHP: erreur non interceptée: appel à la fonction non définie is_user_loggged_in ()
Je sais que c'est un problème avec WordPress ordre de chargement, mais je ne sais pas quelle serait la meilleure solution.
Mon code ressemble à ceci. Une classe avec une fonction de validation à l'intérieur, qui est appelée à partir de wp_ajax
crochets.
// Class containing validation function
class NS_User_System_Password_Settings {
// ...
public function validate_current_password( $current_password = NULL ) {
// Check if logged in
if ( !is_user_loggged_in() ) {
return $this->get_error( 'not_logged_in' );
}
// Rest of validation...
}
// ...
}
// Action hook for AJAX validation
add_action( 'wp_ajax_ns_account_settings_current_password_validation_callback', 'ns_account_settings_current_password_validation_callback' );
add_action( 'wp_ajax_nopriv_ns_account_settings_current_password_validation_callback', 'ns_account_settings_current_password_validation_callback' );
function ns_account_settings_current_password_validation_callback() {
$validate_current_password = NS_User_System_Password_Settings()->validate_current_password( $_POST['current_password'] );
if ( is_wp_error( $validate_current_password ) ) {
echo json_encode( $validate_current_password->get_message() );
} else {
echo json_encode( true );
}
wp_die();
}
Et dans jQuery j'appelle l'action de validation comme ceci:
$('#account-settings-password-form').validate({
submitHandler: function(form) {
$.ajax({
url: ajax_url,
type: 'POST',
data: $(form).serialize(),
success: function(response) {
// ...
},
complete: function() {
// ...
}
});
},
rules: {
current_password: {
required: true,
minlength: 6,
maxlength: 60,
remote: {
url: ajax_url,
type: 'post',
data: {
'action': 'ns_account_settings_current_password_validation_callback',
'current_password': function() {
return $('#account-current-password').val();
}
}
}
},
}
});
La réponse est juste dans votre question et dans le message d'erreur.
Jetez un œil à cette partie de votre code:
public function validate_current_password( $current_password = NULL ) {
// Check if logged in
if ( !is_user_loggged_in() ) {
return $this->get_error( 'not_logged_in' );
}
// Rest of validation...
}
Vous avez une faute de frappe là-dedans. Vous utilisez is_user_loggged_in()
et il n'y a vraiment pas une telle fonction. Ce devrait être is_user_logged_in()
(seulement deux 'g').