Articles

wp_enqueue_scripts – Hogyan sorba állíthatod az eszközeidet a WordPressben

A WordPressben ahelyett, hogy egyszerűen hozzáadnád ezeket a fejléchez, az enqueueing nevű módszert kell használnod, amely egy szabványosított módja az eszközök kezelésének, a függőségek kezelésének plusz bónuszával. Az alábbiakban megtudhatod, hogyan kell ezt megtenni a wp_enqueue_scripts segítségével.

  • How Enqueueing Works
  • Enqueueing Basics With wp_enqueue_scripts
  • Dependency Management
  • Load Scripts in the Footer
  • Specifying Media for Styles

How Enqueueing Works

Egy szkript vagy stílus sorba állításakor két lépés történik. Először regisztrálod – megmondod a WordPressnek, hogy ott van -, majd ténylegesen sorba állítod, ami végül a fejlécbe vagy közvetlenül a záró body tag előtt adja ki.

A két lépés oka a modularitással kapcsolatos. Néha tudni akarsz a WordPressnek egy eszközről, de nem biztos, hogy minden oldalon használni akarod. Például: Ha egy egyéni galéria rövidkódot készítesz, amely Javascriptet használ, akkor valójában csak akkor kell betöltened a JS-t, amikor a rövidkódot használod – valószínűleg nem minden oldalon.

Ez úgy valósítható meg, hogy először regisztrálod a szkriptet, és csak a rövidkód megjelenésekor várakoztatod be ténylegesen (ajánlott olvasmány: The Ultimate Guide to WordPress Shortcodes).

A várakoztatás alapjai a wp_enqueue_scripts segítségével

A szkriptek és stílusok várakoztatásához a front-endben a wp_enqueue_scripts horgot kell használnod. A kampós függvényen belül használhatod a wp_register_script(), wp_enqueue_script(), wp_register_style() és wp_enqueue_style() függvényeket.

add_action( 'wp_enqueue_scripts', 'my_plugin_assets' );function my_plugin_assets() { wp_register_style( 'custom-gallery', plugins_url( '/css/gallery.css' , __FILE__ ) ); wp_register_script( 'custom-gallery', plugins_url( '/js/gallery.js' , __FILE__ ) ); wp_enqueue_style( 'custom-gallery' ); wp_enqueue_script( 'custom-gallery' );}

A fenti példában ugyanabban a függvényben regisztráltam és sorba állítottam az eszközöket, ami egy kicsit redundáns. Valójában az enqueue függvények segítségével rögtön regisztrálhatunk és enqueue-olhatunk, ugyanazokkal az argumentumokkal, mint a register függvényekben:

add_action( 'wp_enqueue_scripts', 'my_plugin_assets' );function my_plugin_assets() { wp_enqueue_style( 'custom-gallery', plugins_url( '/css/gallery.css' , __FILE__ ) ); wp_enqueue_script( 'custom-gallery', plugins_url( '/js/gallery.js' , __FILE__ ) );}

Ha szét kellene választanom a két függvényt, akkor azt úgy tenném, hogy különböző horgokban használnám őket. Egy valós példában a wp_enqueue_scripts horgot használhatnánk az eszközök regisztrálására, a rövidkód függvényét pedig az eszközök sorba állítására.

add_action( 'wp_enqueue_scripts', 'my_plugin_assets' );function my_plugin_assets() { wp_register_style( 'custom-gallery', plugins_url( '/css/gallery.css' , __FILE__ ) ); wp_register_script( 'custom-gallery', plugins_url( '/js/gallery.js' , __FILE__ ) );}add_shortcode( 'custom_gallery', 'custom_gallery' );function custom_gallery( $atts ){ wp_enqueue_style( 'custom-gallery' ); wp_enqueue_script( 'custom-gallery' ); // Gallery code here}

Függőségkezelés

A WordPress sorba állítási mechanizmusa beépített támogatással rendelkezik a függőségkezelésre, mind a wp_register_style(), mind a wp_register_script() függvények harmadik argumentumát használva. Az enqueuing függvényeket rögtön használhatod is, ha nincs szükséged a szétválasztásukra.

A harmadik paraméter a regisztrált szkriptek/stílusok tömbje, amelyeket be kell tölteni, mielőtt az aktuális eszköz sorba kerülne. A fenti példánk nagy valószínűséggel a jQuery-re támaszkodna, ezért most ezt adjuk meg:

add_action( 'wp_enqueue_scripts', 'my_plugin_assets' );function my_plugin_assets() { wp_enqueue_script( 'custom-gallery', plugins_url( '/js/gallery.js' , __FILE__ ), array( 'jquery' ) );}

A jQuery-t nem kell magunknak regisztrálnunk vagy beállítanunk a sorba, mert az már a WordPress része. A WordPressben elérhető szkriptek és stílusok listáját a Codexben találod.

Ha vannak saját függőségeid, akkor azokat is regisztrálnod kell, különben a szkriptjeid nem fognak betölteni. Íme egy példa:

add_action( 'wp_enqueue_scripts', 'my_plugin_assets' );function my_plugin_assets() { wp_enqueue_script( 'custom-gallery', plugins_url( '/js/gallery.js' , __FILE__ ), array( 'jquery' ) ); wp_enqueue_script( 'custom-gallery-lightbox', plugins_url( '/js/gallery-lightbox.js' , __FILE__ ), array( 'custom-gallery' ) );}

Tegyük fel, hogy az első szkript egy galéria, a második pedig annak egy kiterjesztése, ami a képeket egy lightboxban nyitja meg. Vegyük észre, hogy bár a második szkriptünk a jQuery-re támaszkodik, ezt nem kell megadnunk, mivel az első szkriptünk már be fogja tölteni a jQuery-t. Ennek ellenére jó ötlet lehet, ha minden függőséget megadunk, csak azért, hogy semmi ne törjön el, ha elfelejtünk felvenni egy függőséget.

A WordPress most már tudja, hogy milyen szkriptekre van szükségünk, és ki tudja számolni, hogy milyen sorrendben kell őket az oldalhoz hozzáadni.

Skriptek betöltése a láblécben

Ahol csak megtehetjük, hogy a láblécben töltjük be a szkripteket, érdemes. Ez növeli az oldal látszólagos betöltési idejét, és megakadályozhatja, hogy a webhely lógjon a szkriptek betöltése közben, különösen, ha azok AJAX-hívásokat tartalmaznak.

A sorba állítási mechanizmus az ötödik paraméter segítségével (a negyedik egy opcionális verziószám) hozzáadhatja a szkripteket a lábléchez. A fenti példánk a láblécbe töltené be a szkripteket, ha kissé módosítjuk azt.

add_action( 'wp_enqueue_scripts', 'my_plugin_assets' );function my_plugin_assets() { wp_enqueue_script( 'custom-gallery', plugins_url( '/js/gallery.js' , __FILE__ ), array( 'jquery' ), '1.0', true ); wp_enqueue_script( 'custom-gallery-lightbox', plugins_url( '/js/gallery-lightbox.js' , __FILE__ ), array( 'custom-gallery', 'jquery' ), '1.0', true );}

A true megadása az ötödik paraméterként a láblécbe teszi a szkripteket, a false használata vagy a paraméter elhagyása a fejlécbe tölti be a dolgokat. Mint már említettem, amikor csak lehetséges, a szkripteket a láblécbe töltsük be.

Specifying Media For Styles

A stílusregiszter/enqueue függvények ötödik paraméterének használatával szabályozhatjuk, hogy a szkript milyen médiatípusra lett definiálva (nyomtatás, képernyő, kézi stb.). Ezzel a paraméterrel korlátozhatja a stílusok betöltését az adott médiatípusra, ami egy praktikus kis optimalizálási trükk.

add_action( 'wp_enqueue_scripts', 'my_plugin_assets' );function my_plugin_assets() { wp_register_style( 'custom-gallery-print', plugins_url( '/css/gallery.css' , __FILE__ ), array(), '1.0', 'print' );}

A használható médiatípusok teljes listáját a CSS specifikációban találja.

Összefoglaló

Az eszközök sorba állítása egy hatékony módja a kezelésüknek. Neked és más plugin/téma készítőknek nagyobb kontrollt biztosít a rendszer egésze felett, és kiveszi a függőségek kezelését a kezedből.

Ha ez nem lenne elég, ez a módja az eszközök hozzáadásának, sok téma piactér és maga a WordPress tároló nem fogja jóváhagyni a munkádat, ha nem ezt a módszert használod.

Ha tetszett ez a cikk, akkor a Kinsta WordPress tárhely platformját szeretni fogod. Turbózza fel weboldalát, és kapjon 24/7-es támogatást veterán WordPress csapatunktól. Google Cloud alapú infrastruktúránk az automatikus skálázásra, a teljesítményre és a biztonságra összpontosít. Hadd mutassuk meg neked a Kinsta különbséget! Tekintse meg csomagjainkat