web-dev-qa-db-fra.com

Comment "décrocher"/désinscrire jQuery afin qu'il ne soit pas appelé dans le cadre de wp_footer () ;?

J'ai besoin de "décrocher" jQuery de ma wp_footer() ... il est appelé automatiquement et je cherche quelque chose que je puisse ajouter à functions.php qui l'empêche d'être appelé une seconde fois dans le pied de page (car je dois l'appeler dans l'en-tête)

s'il vous plaît pas de commentaires éditoriaux sur pourquoi il est préférable d'appeler dans le pied de page

2
Brian

Vous ne voulez pasannuler l'enregistrementle script; cela feraitindisponibleêtre mis en file d'attente. Vous voulez plutôtdequeuele script.

Vous avez deux choix:

  1. Si vous connaissez la fonction de rappel par laquelle wp_enqueue_script( 'jquery' ) est appelée, vous pouvez simplement appeler remove_action( 'wp_footer', 'callback_function_name' ).
  2. Plus probablement, vous ne saurez pas la fonction de rappel (ou jQuery sera mis en file d'attente en tant que dépendance par un autre script), auquel cas, vous pourrez le retirer directement, ce que vous feriez via wp_dequeue_script() .

par exemple.

function theme_slug_dequeue_footer_jquery() {
     wp_dequeue_script( 'jquery' );
}
add_action( 'wp_footer', 'theme_slug_dequeue_footer_jquery', 11 );

Remarque: quepriorityest probablement assez important, car vous devez vous assurer que votredequeueappel est déclenchéaprèsleenqueuecall.

Modifier

Je personnalise ce thème à partir du thème par défaut de TwentyEleven. Il semble que c'est le thème lui-même qui accroche WordPress et non un plugin. J'ai regardé dans le fichier functions.php par défaut et je ne vois pas de wp_enqueue_script () dans ce fichier. Y a-t-il un autre endroit où je devrais regarder?

Est-ce que vous visualisez par hasard le modèle de vitrine (c'est-à-dire showcase.php )? Notez qu'il met en file d'attente un script personnalisé:

wp_enqueue_script( 'twentyeleven-showcase', get_template_directory_uri() . '/js/showcase.js', array( 'jquery' ), '2011-04-28' );

Il ajoute jQuery à son tableau de dépendants, ce qui signifie que WordPress mettra d'abord en file d'attente jQuery, puisthen/ en file d'attente twentyeleven-showcase. Donc, cela pourrait être la source de la mystérieuse file de mise en file d'attente de jQuery.

(Il y a aussi un appel wp_enqueue_script() dans /inc/theme-options.php, mais je ne pense pas que cela aurait un impact sur votre mise en file d'attente de script front-end.)

6
Chip Bennett

la fonction pour annuler l'enregistrement d'un script est la suivante:

wp_deregister_script('jquery');

Mais le problème que vous avez est différent, si je comprends bien - jQury est inclus DEUX FOIS, une fois sur l’en-tête et une fois sur le pied de page. Il s’agit d’un plugin ou d’une fonction de thème mal exécutés - demandant spécifiquement d’imprimer en pied de page .. Vous voudrez peut-être mieux identifier le problème, car il peut causer d’autres problèmes ...

Quoi qu'il en soit, les exemples de points d'ancrage sont les suivants: (un init, un print_scripts)

function dl_register_common_js() {
wp_deregister_script('jquery');
}
//add_action('init', 'dl_register_common_js'); // will deregister from head
add_action('wp_print_scripts', 'dl_register_common_js');
1
krembo99