WordPress : wp_localize_script ne fonctionne pas
J’ai le code suivant dans mon thème functions.php
mais quand j’appelle console.log(pw_script_vars);
la variable est undefined
. Qu’est-ce que j’ai raté?
function mytheme_enqueue_scripts(){
wp_enqueue_script( 'jquery' );
}
add_action( 'wp_enqueue_scripts', 'mytheme_enqueue_scripts');
function pw_load_scripts() {
wp_enqueue_script('pw-script');
wp_localize_script('pw-script', 'pw_script_vars', array(
'alert' => __('Hey! You have clicked the button!', 'pippin'),
'message' => __('You have clicked the other button. Good job!', 'pippin')
)
);
}
add_action('wp_enqueue_scripts', 'pw_load_scripts');
Solution n°1 trouvée
Vous pouvez également essayer de localiser jQuery sans avoir besoin de créer des fichiers JS vides supplémentaires.
wp_localize_script('jquery', 'pw_script_vars', array(
'alert' => __('Hey! You have clicked the button!', 'pippin'),
'message' => __('You have clicked the other button. Good job!', 'pippin')
)
);
Cela fonctionne comme un charme pour moi. J’espère que cela aide.
Solution n°2 trouvée
Vous n’avez inclus aucun fichier javascript avec votre fichier wp_enqueue_script
.
function pw_load_scripts() {
wp_enqueue_script('pw-script', get_template_directory_uri() . '/test.js');
wp_localize_script('pw-script', 'pw_script_vars', array(
'alert' => __('Hey! You have clicked the button!', 'pippin'),
'message' => __('You have clicked the other button. Good job!', 'pippin')
)
);
}
add_action('wp_enqueue_scripts', 'pw_load_scripts');
Créez un fichier vide appelé test.js
dans votre répertoire de thème et cela fonctionnera.
Si vous regardez ensuite votre code source, vous verrez :
<script type='text/javascript'>
/* <![CDATA[ */
var pw_script_vars = {"alert":"Hey! You have clicked the button!","message":"You have clicked the other button. Good job!"};
/* ]]> */
</script>
Vous pouvez ensuite taper pw_script_vars.alert
dans votre console pour obtenir le "Hey! You have clicked the button!"
message.
Solution n°3 trouvée
<div class= »snippet » data-lang= »js » data-hide= »false » data-console= »true » data-babel= »false »>
Place the code block below the wp_enqueue_script
0 commentaire