Forțează încărcarea unui script pentru a fi primul în ordinea de importanță
Am câteva scripturi care sunt înregistrate pentru încărcare (enqueued),
problema este că vreau să forțez ordinea de importanță în care sunt încărcate aceste scripturi. Există unul în particular care este încărcat dintr-un plugin înaintea celor din temă și care necesită jQuery, dar pluginul nu include jQuery ca dependință (programare defectuoasă din partea dezvoltatorului pluginului, dar prefer să nu modific cod terț pentru compatibilitate viitoare)
există vreo modalitate de a modifica ordinea de încărcare (enqueue) în timpul execuției?
Mulțumesc mult
Trebuie doar să încărcați scripturile înainte ca pluginul să o facă. Puteți realiza acest lucru setând prioritatea la 0 pentru hook-ul dumneavoastră. De exemplu, faceți următoarele:
add_filter( 'wp_enqueue_scripts', 'wpse8170_enqueue_my_scripts', 0 );
// sau dacă încărcați scripturile pe acțiunea init
// add_action( 'init', 'wpse8170_enqueue_my_scripts', 0 );
function wpse8170_enqueue_my_scripts() {
wp_enqueue_script( 'myscript', 'http://path/to/my/script.js', array( 'jquery' ) );
// alte scripturi ale mele pot fi adăugate aici...
}
Setarea priorității pentru hook-uri va plasa acțiunea la începutul cozii de apel, astfel încât scripturile dumneavoastră vor fi adăugate primele.
scuze că întreb naiv, dar presupun că wpse8170_enqueue_my_scripts_on_init este o funcție personalizată cu un apel standard enqueue_scripts în ea?
Alex
Aceasta nu funcționează întotdeauna: http://wordpress.stackexchange.com/questions/91961/hook-wp-enqueue-scripts-priority-has-no-effect
Dave Kiss
Pentru a adăuga un script înaintea altor scripturi, folosește wp_register_script() în loc de wp_enqueue_script(), apoi adaugă manual scriptul tău să fie primul în coadă:
wp_register_script('handle', get_template_directory_uri()."/custom.js");
array_unshift(wp_scripts()->queue, 'handle');