Pri registrácii skriptu, pomocou WordPress funkcie wp_enqueue_script()
, nemáme veľa možností, ako pridať ďalšie atribúty pre skript (napríklad: type="module"
, async
, defer
…). WordPress, nám však ponúka filter. Vďaka nemu, si vieme náš skript upraviť, podľa našich potrieb.
Príklad pridania type="module"
do nášho skriptu.
/** * pridanie type="module" pre script * @param $tag * @param $handle * @param $src * @return mixed|string */ function viking_add_type_attribute( $tag, $handle, $src ) { // Kontrola, či je to náš skript, ak nie, vráť tag, bez úpravy if ( 'nas-tag' !== $handle ) { return $tag; } return '<script type="module" src="' . esc_url( $src ) . '" id="' . $handle . '-js"></script>'; } add_filter( 'script_loader_tag', 'viking_add_type_attribute' , 10, 3 );
Pre úpravu, použijeme filter script_loader_tag
. Tento filter nám ponúka 3 parametre.
$tag
– je to samotný tag <script>...</script>
$handle
– meno pre skript, bude zároveň použité v ID skriptu$src
– url skriptu
Ďalší príklad, ako pridať do skriptu defer
:
/** * pridanie "defer" pre script * @param $tag * @param $handle * @param $src * @return mixed|string */ function viking_defer_js( $tag, $handle, $src ) { // Kontrola, či je to náš skript, ak áno, pridaj do skriptu "defer" if ( 'nas-tag' === $handle ) { $tag = str_replace( '></script>', ' defer></script>', $tag ); } return $tag; } add_filter( 'script_loader_tag', 'viking_defer_js', 10, 3 );
V tomto prípade, použijeme php funkciu str_replace()
na doplnenie defer
do skriptu.
Či už použijeme jeden, alebo druhý spôsob, takto si vieme upraviť výpis skriptu, podľa našich potrieb.