Prioritatea hook-ului 'wp_enqueue_scripts' nu are niciun efect
Într-o temă la care lucrez există până la 3 foi de stil. Folosesc hook-ul 'wp_enqueue_scripts'. Ordinea foilor de stil este importantă pentru suprascrierea stilurilor. Am un cod de acest gen:
add_action('wp_enqueue_scripts', 'add_stylesheet_one', 10);
add_action('wp_enqueue_scripts', 'add_stylesheet_two', 14);
add_action('wp_enqueue_scripts', 'add_stylesheet_three', 12);
Cu aceste priorități, ordinea foilor de stil ar trebui să fie 'stylesheet_one', 'stylesheet_three' și 'stylesheet_two'. Dar prioritatea nu are niciun efect. Am încercat diferite numere dar ordinea nu se schimbă. Am omis ceva?
Mulțumesc pentru ajutor!!!

Problema este că acțiunile tale sunt executate în ordinea în care le percepi, dar stilurile sunt doar colectate de WordPress și incluse într-o ordine aleatorie.
Ordinea funcțiilor tale add_actions nu va fi importantă. Aș face astfel:
function add_all_stylesheets() {
// ai omis aceasta din întrebarea ta, vezi mai jos
}
add_action('wp_enqueue_scripts', 'add_all_stylesheets');
Acum - dacă dorești ca scripturile tale să fie incluse în ordine, va trebui să le faci să "depindă" unele de altele pentru a se înlănțui.
function add_all_stylesheets() {
wp_enqueue_style( 'stylesheet-one', get_template_directory_uri() . '/css/stylesheet-one.css' );
wp_enqueue_style( 'stylesheet-two', get_template_directory_uri() . '/css/stylesheet-two.css', array( 'stylesheet-one' ) );
wp_enqueue_style( 'stylesheet-three', get_template_directory_uri() . '/css/stylesheet-three.css', array( 'stylesheet-two' ) );
}
add_action('wp_enqueue_scripts', 'add_all_stylesheets');
Acum "stylesheet-two" depinde de "stylesheet-one" și "three" depinde de "two". Acesta ar trebui să fie efectul dorit de tine.

Cu asta ca punct de plecare funcționează. Mulțumesc! Dar, să fiu sincer, nu răspunde chiar la întrebarea mea: :P De ce nu are prioritatea niciun efect?? Există câteva capcane de ținut minte? Vreau doar să știu asta. Iubesc Wordpress și vreau să cunosc toate detaliile :D

Intern, WordPress așteaptă să colecteze toate scripturile înainte de a le include.
Să zicem că WordPress adaugă 7 scripturi proprii, apoi tu adaugi trei ale tale. La un moment dat, WordPress analizează lista și le include în modul pe care îl consideră potrivit (determinând care scripturi depind unele de altele).
Nu contează în ce ordine le adaugi tu, deoarece ordinea este ignorată în timp ce WordPress se uită la dependențe.
De ex. Adaugi 3 scripturi care au nevoie de jQuery, dar jQuery este adăugat al patrulea. jQuery este mutat pe prima poziție.
Poți garanta ordinea doar prin "3 are nevoie de 2", "2 are nevoie de 1".

Ok, am înțeles. Cu dependențe, parametrul de prioritate din 'add_action' va fi ignorat. Dar când elimin toate dependențele, prioritatea este tot ignorată. Dacă folosesc de ex. add_action('wp_head', 'my_function', 5);
funcționează. Este acest comportament diferit la unele hook-uri?

Încerc să clarific acest lucru încă o dată. Prioritatea ta nu este ignorată. Aceasta este ordinea în care sunt adăugate în listă. Dar lista poate fi rearanjată. Poți să le adaugi în wp_head, și poate funcționa acum, din pură noroc. Dar dacă faci un upgrade sau adaugi un plugin, s-ar putea să nu mai funcționeze. Doar pentru că sunt adăugate în ordine, nu garantează că vor rămâne în aceași ordine. Singura modalitate de a garanta acest lucru este utilizarea dependențelor.

Știu că este prea târziu. Dar acum funcționează așa cum trebuie.
add_action
are un al 3-lea argument care reprezintă prioritatea. Mai jos, am încărcat scripturile cu prioritățile 10, 12 și 14
. Astfel, încarcă scripturile în partea de frontend conform priorităților date.
Mai jos este fragmentul meu de cod și funcționează corect.
add_action( 'wp_enqueue_scripts', 'test_enqueue_styles_1', 10 );
add_action( 'wp_enqueue_scripts', 'test_enqueue_styles_2', 14 );
add_action( 'wp_enqueue_scripts', 'test_enqueue_styles_3', 12 );
function test_enqueue_styles_1() {
wp_enqueue_style( 'font-awesome-1-css', get_template_directory_uri() . 'assets/css/font-awesome.min.css' );
}
function test_enqueue_styles_2() {
wp_enqueue_style( 'font-awesome-2-css', get_template_directory_uri() . 'assets/css/font-awesome.min.css' );
}
function test_enqueue_styles_3() {
wp_enqueue_style( 'font-awesome-3-css', get_template_directory_uri() . 'assets/css/font-awesome.min.css' );
}
Secvența de încărcare
test_enqueue_styles_1
test_enqueue_styles_3
test_enqueue_styles_2

Hmm, există vreun motiv pentru care faci asta în acest fel? Metoda mai convențională este cea de mai jos.
(Următoarele presupun că fișierele tale de stil sunt în directorul css al temei tale.)
function my_enqueue_scripts() {
wp_enqueue_style( 'stylesheet_one', get_template_directory_uri() . '/css/stylesheet_one.css' );
wp_enqueue_style( 'stylesheet_three', get_template_directory_uri() . '/css/stylesheet_three.css' );
wp_enqueue_style( 'stylesheet_two', get_template_directory_uri() . '/css/stylesheet_two.css' );
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_scripts' );
Cu toate acestea - nu sunt sigur de ce prioritățile din metoda ta nu funcționează. Probabil ar trebui să vedem codul din funcțiile atașate.

în plus, dacă specifici o dependență pentru fiecare stil, nu contează în ce ordine le pui.

Știu, pot face asta într-o singură funcție ca în exemplul tău. O fac în acest fel pentru că folosesc opțiuni pentru temă și toate setările pentru opțiunile temei sunt în fișiere separate.

Hm, probabil ai putea totuși să folosești wp_enqueue_style în funcțiile tale - și să incluzi dependența corectă, așa cum sugerează Milo și infamouse.

Îmi pare rău, o parte din ultimul meu comentariu s-a pierdut. Iată complet :-) Știu, pot face asta într-o singură funcție ca în exemplul tău. O fac în acest fel, pentru că folosesc opțiuni pentru temă și toate elementele legate de opțiunile temei sunt în fișiere separate. Fișierul principal de stiluri este încărcat în functions.php, iar celelalte fișiere de stiluri sunt încărcate în alte fișiere. Așa că am încercat în acest fel.
