Pouvons-nous en quelque sorte utiliser wp_localize_script () pour créer des variables js globales sans un descripteur de script spécifique accessible à partir de tous les fichiers js, même si les scripts js ne sont pas mis en file d'attente correctement en utilisant wp_enqueue_script?
C'est le code que j'utilise qui crée varibale pour la poignée 'ajaxscript', donc je ne peux pas accéder à l'objet 'ajaxobject' dans un fichier js qui est inclus dans le header.php directement par <script src="xxx" .... />
wp_register_script( 'ajaxscript', get_bloginfo( 'template_url' ) . '/js/ajaxscript.js', array(), $version );
wp_enqueue_script( 'ajaxscript' );
wp_localize_script( 'ajaxscript', 'ajaxobject',
array(
'ajaxurl' => admin_url( 'admin-ajax.php' ),
'ajaxnonce' => wp_create_nonce( 'itr_ajax_nonce' )
)
);
wp-enqueue-script
wp-localize-script
Subharanjan
la source
la source
wp_localize_script
passe de toute façon. Avec les deux méthodes, les variables sont accessibles à partir de n'importe quel scriptRéponses:
Au lieu d'utiliser wp_localize_script dans ce cas, vous pouvez accrocher vos variables js à wp_head, de cette façon, il serait disponible pour tous les fichiers js comme:
Aussi, comme suggéré par @Weston Ruter, vous pouvez coder json les variables:
la source
json_encode
ici, par exemple:var ajaxurl = <?php echo json_encode( admin_url( "admin-ajax.php" ) ); ?>;
Vous pouvez exporter toutes les données que vous souhaitez dans le
wp_head
crochet, comme le montrent les réponses ci-dessus. Cependant, vous devez utiliserjson_encode
pour préparer les données PHP pour l'exportation vers JS au lieu d'essayer d'incorporer des valeurs brutes dans les littéraux JS:L'utilisation
json_encode
vous facilite la tâche et évite les erreurs de syntaxe accidentelles si votre chaîne contient des guillemets. Encore plus important, l'utilisation d'json_encode
attaques XSS contrarie.la source
J'ai fini par faire ça. Ça fonctionne maintenant !! Merci @ dot1
la source
json_encode
au lieu de créer manuellement JSON.json_encode
maintenant :) Merci @WestonRuter !!Bien que ce ne soit pas mon meilleur travail, c'est une autre façon simple d'accomplir la mise en données dans la réponse:
Ajoutez des données JS au contexte de la fenêtre:
Cela fonctionnera pour les scripts d'en-tête ou de pied de page et ne se répétera pas.
la source