WordPress : wp_localize_script ne fonctionne pas

Publié par Jean-Michel le

J’ai le code suivant dans mon thème functions.phpmais 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.jsdans 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.alertdans 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    

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *