web-dev-qa-db-fra.com

comment utiliser wp_localize_script dans un modèle de page personnalisé

J'ai le modèle appelé page d'accueil qui a assigné à la page d'accueil et au bas d'un modèle, j'ai une balise de script. Maintenant, je veux utiliser mon JSON dans cette balise de script.

home-template.php

add_action('wp_enqueue_scripts', 'pass_var_to_js',99);
function pass_var_to_js() {

// Localize the script with new data
$translation_array = array(
'popularDestination' => json_encode($data['POPULAR DESTINATIONS']),
);
wp_localize_script( 'home_page_json', 'home', $translation_array );

// Enqueued script with localized data.
wp_enqueue_script( 'home_page_json' );
}

<script type="text/javascript">
 var data = home.popularDestination;
</script>

mais wp_localize_script n'est pas chargé dans ma page, je vérifie view-source. ne pas afficher.

désolé pour mon mauvais anglais.

1
Bhautik

D'après le code fourni, il semble que vous compreniez mal comment wp_localize_script fonctionne. La signature de la fonction ressemble à ceci:

wp_localize_script( $handle, $name, $data );

$handle est le nom d'un fichier JavaScript que vous avez enregistré ou mis en file d'attente before appelant wp_localize_script. Jetez un coup d’œil à l’exemple du codex (j’ai ajouté les numéros de ligne ci-dessous):

1: <?php
2: 
3: // Register the script
4: wp_register_script( 'some_handle', 'path/to/myscript.js' );
5: 
6: // Localize the script with new data
7:  $translation_array = array(
8:    'some_string' => __( 'Some string to translate', 'plugin-domain' ),
9:    'a_value' => '10'
10: );
11: wp_localize_script( 'some_handle', 'object_name', $translation_array );
12: 
13: // Enqueued script with localized data.
14: wp_enqueue_script( 'some_handle' );
  1. Regardez la ligne 4 ci-dessus. Tout d'abord, un fichier JavaScript est enregistré avec le $handle'some_handle'.

  2. Ensuite, à la ligne 11, wp_localize_script() est utilisé pour enregistrer les données de localisation du descripteur de script 'some_handle' enregistré à la ligne 4.

  3. Enfin, à la ligne 14, le fichier JavaScript (enregistré à la ligne 4) est mis en file d'attente. Étant donné que wp_localize_script() a été transmis au même $handle inscrit à la ligne 4, WordPress inclut automatiquement les données localisées sur chaque page appelée wp_enqueue_script( 'some_handle' );.

En d'autres termes, vous devez utiliser wp_localize_script avec un fichier JavaScript enregistré. Pas tout à fait comme vous le faites actuellement.

Cette citation de la section des notes dit plus ou moins la même chose:

IMPORTANT! wp_localize_script () DOIT être appelé après l'enregistrement du script à l'aide de wp_register_script () ou wp_enqueue_script ().


De plus, je ne pense pas que vous ayez besoin de json_encode() votre $data. WordPress devrait le faire pour vous.

3
DaveLak