web-dev-qa-db-fra.com

Existe-t-il un moyen de définir les fonctions liées à wp_footer?

Je me demandais si nous pouvions définir l'ordre d'une fonction reliée à wp_footer (), j'ai créé une fonction qui echos:

<script> ajsfunction(); </script>

et j'ai également mis en file d'attente le fichier js de cette fonction et l'a imprimé dans le pied de page, mais la procédure ci-dessus est en cours d'impression avant de créer un lien vers le fichier js, de sorte que cela ne fonctionne pas, je le fais car ce script n'est pas exécuté sur toutes les pages uniquement les uns.

si nous ne pouvons pas faire cela avec wp_footer, existe-t-il un moyen de sortir cette balise de script après le fichier js mis en file d'attente?

merci d'avance.

2
Pierre

La méthode recommandée consiste à appeler votre fonction dans le fichier .js que vous mettez en file d'attente. Y a-t-il une raison pour laquelle vous ne pouvez pas faire ça?

Si vous avez besoin d'accéder à des données dynamiques telles que les options WP à partir de votre script, utilisez wp_localize_script pour initialiser un objet javascript avec les données dont vous avez besoin:

$data = array('some_option' => get_option('an_option_from_my_theme'));

wp_enqueue_script('your_script_handle', 'path/to/the/script.js');
wp_localize_script('your_script_handle', 'my_theme_options', $data);

Dans votre script, vous pouvez accéder aux données comme un objet javascript:

console.log(my_theme_options.an_option_from_my_theme);

  1. Placez votre code dans un autre fichier javascript que vous avez mis en file d'attente et transformez le plugin en dépendance de ce fichier.

  2. Ajoutez votre code dans le crochet wp_footer, après WP, affiche les scripts de pied de page:

    add_action('wp_footer', function(){
    
     ?>
     <script>
    
     // your javascript
    
     </script>
     <?php 
    
     }, 100);
    

    "100" est la priorité, plus le nombre est élevé - plus la priorité d'exécution de votre action est basse. Les scripts sont imprimés avec la priorité "20"

J'irais avec (1) si vous avez beaucoup de code js, sinon le javascript en ligne est bien (2).

2
onetrickpony

Regarde ça..

http://codex.wordpress.org/Function_Reference/add_action

Vous pouvez définir la priorité sur deux fonctions accrochées

add_action('wp_footer','your_func',100);
add_action('wp_footer','your_func1',200);
0
Rajeev Vyas