WP_SCRIPT_ADD_DATA似乎不起作用

时间:2021-05-05 作者:D Flexer

我试着遵循codex 下面是各种线程,很简单,复制粘贴各种示例,但都无济于事。它就是不起作用。

是否已折旧?有没有人能在WP或5.7的最新版本中特别做到这一点

 function my_scripts() {
wp_enqueue_script( \'bs-popper\', \'https://cdn.jsdelivr.net/npm/@popperjs/[email protected]/dist/umd/popper.min.js\', array(\'jquery\'), _S_VERSION, true );
wp_script_add_data(\'bs-popper\' , array(\'integrity\') , array(\'sha384-XXXXXXXXXXXXXXXX\')); 
} 
add_action( \'wp_enqueue_scripts\', \'my_scripts\' ); 
[编辑]简单:上面的示例来自一个有多个版本的版本,但这个简单的版本也不起作用

wp_script_add_data(\'bs-popper\' , \'integrity\' , \'sha384-XXXXXXX\');

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

这不是什么wp_script_add_data()

它不支持向脚本标记添加任意属性。它允许您将元数据添加到排队脚本中,但WordPress支持的唯一键是\'conditional\', 用于告诉脚本是否加载特定版本的IE。例如:

wp_script_add_data(\'bs-popper\' , \'conditional\' , \'IE 9\');
将导致:

<!--[if IE 9]>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@popperjs/[email protected]/dist/umd/popper.min.js" id="bs-popper-js">
<![endif]-->
但这个:

wp_script_add_data(\'bs-popper\' , \'attribute\' , \'value\');
什么都不会做。

如果希望能够以这种方式向脚本添加属性,则需要使用script_loader_tag filter可筛选<script> 标记以添加属性(如果已使用wp_script_add_data(). 有一个例子here, 但对于您的用例,它将如下所示:

add_filter(
    \'script_loader_tag\', 
    function( $tag, $handle ) {
        $integrity = wp_scripts()->get_data( $handle, \'integrity\' );

        if ( $integrity ) {
            $tag = str_replace( \'></\', \' integrity="\'. esc_attr( $integrity ) .\'"></\', $tag );
        }

        return $tag;
    }, 
    10, 
    2
);

相关推荐