J'ai un formulaire de contact dans une page WordPress comme ceci:
$( '#contact_form' ).bootstrapValidator({
fields: {
// ...
},
submitHandler: function( formInstance ) {
$.post( "../send-message", $("#contact_form").serialize(), function( result ) {
alert( pw_script_vars.State );
});
}
});
Lorsque le formulaire est soumis à l'aide de la demande Ajax, il passe à une autre page WordPress intitulée /send-message
qui contient le code PHP, puis doit renvoyer une valeur de succès ou d'échec à la demande Ajax pour signaler un succès ou une erreur. message d'échec. J'ai essayé d'utiliser la fonction wp_localize_script
dans le fichier functions.php
en utilisant une valeur fixe et cela a bien fonctionné:
function enqueue_scripts() {
wp_enqueue_script( 'pw_script', get_stylesheet_directory_uri().'/inc/js/functions.min.js', array( 'jquery' ) );
wp_localize_script( 'pw_script', 'pw_script_vars', array( 'State' => 'success' ) );
}
add_action( 'wp_enqueue_scripts', 'enqueue_scripts' );
Mais lorsque j'ai essayé d'utiliser le wp_localize_script
dans la page WordPress /send-message
, cela n'a pas fonctionné. Voici le contenu de la page '/ send-message':
<?php
$sendSuccess = sendMessage();
if( $sendSuccess )
wp_localize_script( 'pw_script', 'pw_script_vars', array( 'State' => 'success' ) );
else
wp_localize_script( 'pw_script', 'pw_script_vars', array( 'State' => 'failure' ) );
function sendMessage() {
//This function will send the email then it will return true or false.
}
?>
L'utilisation de wp_localize_script
dans /send-message
génère une variable non définie pw_script_vars
dans le fichier JavaScript.
Comment utiliser wp_localize_script
dans une page WordPress autre que functions.php
?
Vous ne pouvez pas utiliser wp_localize_script
dans un modèle de page. Vous devez l’utiliser dans functions.php
ou dans votre plug-in personnalisé, après avoir enregistré votre script, qui se trouve généralement dans l’action wp_enqueue_scripts
.
https://codex.wordpress.org/Function_Reference/wp_localize_script
Vous n'avez pas besoin de déplacer votre wp_localize_script ailleurs. Votre problème réside dans le fait que vous essayez d'utiliser AJAX en dehors de WordPress. Permettez-moi de vous référer à une réponse précédente, montrant une version simple de l'utilisation de AJAX dans WordPress ici