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.
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 );
Où $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' );
Regardez la ligne 4 ci-dessus. Tout d'abord, un fichier JavaScript est enregistré avec le $handle
'some_handle'
.
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.
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.