web-dev-qa-db-fra.com

Comment forcer wp_enqueue_scripts à se charger à la fin de <head>?

Je charge des scripts via wp_enqueue_scripts dans mon thème enfant.

Le seul problème est que mon script style.css est chargé AVANT les scripts de plug-in, mais je dois remplacer le css dans les plug-ins avec mon style.css, ce qui signifie qu'il doit charger les scripts de plug-in AFTER.

Je ne veux pas ajouter "! Important" à tous mes styles css, car cela est fastidieux et pourrait casser une partie de mon style.

J'ai essayé d'ajouter une priorité mais cela n'a aucun effet sur l'ordre de chargement.

    add_action('wp_enqueue_scripts', 'scripts', 9999);

Je voudrais simplement wp_enqueue_scripts tout à la fin de l'en-tête, juste avant </ head>. Comment ceci peut être fait? Merci :-)

METTRE À JOUR:

Yay je l'ai compris!

Enregistrez simplement le filtre avec:

    add_action('wp_print_styles', 'scripts');

wp_print_styles se charge avec une priorité de 8 et reste placé dans l'en-tête car il fait partie de wp_head.

J'ai compris cela en regardant dans wp-includes/default-filters.php, alors merci pour le conseil! :-)

5
Nate

wp_enqueue_scripts est ajouté par défaut avec une priorité de 1 à wp_head. Voir wp-includes/default-filters.php pour plus de détails.

Vous pouvez essayer de changer la priorité:

remove_action( 'wp_head', 'wp_enqueue_scripts', 1 );
add_action( 'wp_head', 'wp_enqueue_scripts', 9999 );

Mais je ne le recommande pas. Il y a probablement une bonne raison pour la valeur par défaut. Certains scripts peuvent ne plus fonctionner lorsque vous changez cela.

5
fuxia

Je pense que la façon la plus conviviale de faire cela consiste à utiliser le paramètre wp_enqueue_styles()'s $ deps. En supposant que les styles de plug-in soient mis en file d'attente via wp_enqueue_styles () (ce qui est peu pathétique, certes), vous listez un tableau des poignées de la feuille de style dont dépendent vos styles, puis elles se chargent par la suite.

1
mrwweb