web-dev-qa-db-fra.com

Identifier la priorité de style.css pour pouvoir charger un petit fichier CSS en dernier

J'ai un petit peu de css toutes les heures et je veux

  1. conservez-le dans un deuxième fichier (à l'exception de style.css) et

  2. chargez-le après le fichier style.css de mon thème.

Je crois que je peux le charger avant style.css en définissant sa priorité sur style.css moins un (par exemple, si le style.css principal a une priorité de 10, mon bit de code aurait une priorité de 9).

Mais voici mon problème: mis à part les essais et les erreurs, je ne sais pas comment identifier, par programme, la priorité d'une feuille de style. Je sais que je pourrais utiliser la méthode de la réduction de moitié pour affiner la valeur, mais je préfère ne pas le faire. Il serait bon d’apprendre une méthode de résolution de ce problème fondée sur des principes. Peut-être y at-il une priorité par défaut du fichier CSS du thème principal? Si tel est le cas, je peux facilement essayer le ($ defaultPriorityValue - 1). Est-ce possible, et si non, quel est un bon moyen de le faire?

p.s. Je ne souhaite pas mettre en file d'attente les styles intégrés dans mon functions.php car je dois conserver ce code dans un fichier séparé

Bien que j'ai trouvé la solution fonctionnelle que j'ai énumérée dans les réponses ci-dessous, j'aimerais quand même que quelqu'un puisse expliquer s'il existe un moyen d'identifier, par programme, la priorité d'une feuille. Merci!

3
CoderScissorhands

Lorsque vous mettez correctement un fichier en file d'attente, une instance de la classe wp_styles ( more on this ) est créée. La priorité des actions est ignorée. Donc, peu importe si vous écrivez quelque chose comme

add_action ('wp_enqueue_scripts','function_adding_main_style',10);
add_action ('wp_enqueue_scripts','function_adding_small_style',11);

La raison en est exactement l'existence du système de dépendance. WP commence par collecter tous les fichiers de style mis en file d'attente, puis vérifie leur dépendance. Si A.css est mis en file d'attente avant B.css mais que le premier dépend de ce dernier, ils seront chargés en conséquence. Vous pouvez voir que cette réorganisation a lieu dans la méthode all_deps de la classe parent .

En résumé, vous n'êtes pas censé jouer avec la priorité des fichiers de style en dehors du système de dépendances que vous donne WP. Votre propre solution est la meilleure.

Cela dit, vous pouvez toujours contourner le système de mise en file d'attente et faire écho de votre fichier directement vers la fin du hook wp_head. Peu élégant, mais efficace.

2
cjbj

La solution de dépendance

Une solution fonctionnelle que j'ai trouvée et testée avec succès provient de la réponse de @ helgatheviking à cette question . Cette solution implique de définir une dépendance sur un petit fichier CSS (qui est un troisième argument) lors de la mise en file d'attente. Vous définissez la dépendance du petit fichier CSS sur le handle/id du fichier CSS principal.

 wp_enqueue_style(
        'my-little-css-style',
        get_stylesheet_directory_uri() . '/my_little_style.css',
        'themename-style' // this is the dependency, which I set to  the handle of the main css stylesheet. It makes the small sheet load before the main one. 
    );
0
CoderScissorhands