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.

