web-dev-qa-db-fra.com

Pourquoi la mise en file d'attente jquery-ui-core est-elle dans mon pied de page au lieu de l'en-tête?

C’est ce que j’utilise pour vérifier que jquery-ui-core est disponible:

if (!is_admin()) add_action('wp_enqueue_scripts', 'zg_load_scripts');
function zg_load_scripts(){
    wp_enqueue_script("jquery-ui-core");
} 

J'ai aussi essayé wp_enqueue_script("jquery-ui-core", null, null, false, false); dans une tentative vaine de le forcer dans l'en-tête. Pas de dé. Que se passe t-il ici?

3
Tom Auger

Pourquoi en avez-vous besoin dans l'en-tête?

Il est en file d'attente dans le pied de page, car lors de son enregistrement, il était configuré pour mettre en file d'attente dans le pied de page.

Dans wp-includes/script-loader.php:

$scripts->add( 'jquery-ui-core', '/wp-includes/js/jquery/ui.core.js', array('jquery'), '1.8.12' );
$scripts->add_data( 'jquery-ui-core', 'group', 1 );

La deuxième ligne oblige à charger dans le pied de page. Vous pouvez désenregistrer le script, puis le remettre en file d'attente dans l'en-tête:

<?php
add_action('wp_enqueue_scripts', 'zg_load_scripts');
function zg_load_scripts(){
    if( is_admin() ) return;
    wp_deregister_script( 'jquery-ui-core' );
    wp_enqueue_script( 'jquery-ui-core', site_url(  '/wp-includes/js/jquery/ui.core.js' ), array('jquery'), '1.8.12' );
}
7
chrisguitarguy