将类型添加到插件内部的入队脚本

时间:2021-11-05 作者:theMap

所以我不知道这是否可行,但我有一个问题-我们正在集成OneTrust,其中一个要求是更改<script type=\'text/javascript\'><script type=\'text/plain>;。

在我们安装在WordPress上的一个插件中,它们的文件已排队:

  wp_enqueue_script(
    \'juicerembed\',
    \'//assets.juicer.io/embed-no-jquery.js\',
    array(\'jquery\'),
    false,
    false
  );
加载脚本时,它不会加载默认为的类型<script src=\'//assets.juicer.io/embed-no-jquery.js?ver=5.8.1\' id=\'juicerembed-js\'></script>.

有没有办法将插件挂接或过滤到排队脚本中并添加类型?直接将其添加到插件中只会在下次更新时被覆盖。

你能挂接/过滤吗

1 个回复
SO网友:Pat J

有一个过滤器:script_loader_tag.

add_filter( \'script_loader_tag\', \'wpse397773_change_script_tags\', 10, 3 );
function wpse397773_change_script_tags( $tag, $handle, $src ) {
    $tag = \'<script type="text/plain" src="\' . $src . \'" id="\' . $handle . \'-js"></script>\';
    return $tag;
}
这将改变所有<script> 页面中的标记(假设它们已正确排队)用于<script type="text/plain">.

Update: 仅更改<script> 的标记juicerembed 脚本中,可以执行以下操作:

add_filter( \'script_loader_tag\', \'wpse397773_change_script_tags\', 10, 3 );
function wpse397773_change_script_tags( $tag, $handle, $src ) {
    if ( \'juicerembed\' == $handle ) {
        $tag = \'<script type="text/plain" src="\' . $src . \'" id="\' . $handle . \'-js"></script>\';
    }
    return $tag;
}
我还没有测试过这个,但希望这将是你的一个起点。