function add_type_attribute($tag, $handle, $src) {
// if not your script, do nothing and return original $tag
if ( 'your-script-handle' !== $handle ) {
return $tag;
}
// change the script tag by adding type="module" and return it.
$tag = '<script type="module" src="' . esc_url( $src ) . '"></script>';
return $tag;
}
3条答案
按热度按时间utugiqy61#
可以通过应用过滤器“script_loader_tag”向脚本添加属性。
使用
add_filter('script_loader_tag', 'add_type_attribute' , 10, 3);
添加过滤器。定义回调函数,类似于上面链接中给出的示例:
h43kikqp2#
我想对Paul Naveda的回答做一个具体的说明。是的,它是有效的,但是这样你基本上会失去任何额外的内联脚本。
我的意思是,当使用
wp_add_inline_script()
函数时,它基本上接受你给它的东西,或者在当前的句柄之前或之后添加它:(github)开发者可以在一个文件夹中创建一个脚本。
因此通过执行以下操作:
您丢失了before和after标记,为了确保不会丢失它,可以使用
wp_localize_script()
(它应该只用于翻译),或者添加以下代码行:它保留之前和之后的内容,如果存在,则打印该内容
请记住,由于
$translations
变量的原因,这仍然不是完美的,但如果使用wp_add_inline_script()
,这是另一种方法roejwanj3#
这是一个有点复杂的方式去...但我已经使用以下添加延迟,交叉源等...
我不认为这是官方的,但从我所读到的,这不是一个坏的方式来做它(我已经看到这种方法在生产的几个插件)。
因此,(调整参数/变量以明显适合)需要脚本注册(而不仅仅是入队)(请参见https://developer.wordpress.org/reference/functions/wp_script_add_data/):
然后是过滤器(就像上面的答案一样,但我认为这概述了如何将其设置为更可重用、更灵活等)