如果使用wp_enqueue_script添加脚本,如何绕过CloudFlare rocket脚本?

时间:2017-03-19 15:23:31

标签: php wordpress cloudflare rocketscript

我只是用Google搜索,但没有找到任何具体信息。我在WordPress的PHP模板上有这样的代码:

<?php wp_enqueue_script( 'jquery-carousel', get_template_directory_uri().'/js/jquery.carouFredSel-6.2.1-packed.js', array('jquery'),'',true); ?>

我想在jquery.carouFredSel-6.2.1-packed.js的'src'属性之前为Rocketloader data-cfasync="false"添加CloudFlare ignore

我该怎么办?

此致

修改

非常感谢@Mary的代码。因此,解决方法是在functions.php中添加此函数:

function add_data_attribute( $tag, $handle, $src ) {
    if ( 'jquery-carousel' !== $handle )
       return $tag;

    return str_replace( ' src', ' data-cfasync="false" src', $tag );
}

add_filter( 'script_loader_tag', 'add_data_attribute', 10, 3 );

如果需要在此函数中添加“jquery-carousel1”,“jquery-carousel2”等更多标签,则代码如下所示:

function add_data_attribute( $tag, $handle, $src ) {
    if( ! in_array( $handle, array( 'jquery-carousel', 'jquery-carousel1', 'jquery-carousel2' ) ) )
       return $tag;

    return str_replace( 'src', 'data-cfasync="false" src', $tag );
}

add_filter( 'script_loader_tag', 'add_data_attribute', 10, 3 );

1 个答案:

答案 0 :(得分:1)

您可以尝试使用script_loader_tag进行过滤。

function add_data_attribute( $tag, $handle, $src ) {
    if ( 'jquery-carousel' !== $handle )
       return $tag;

    return str_replace( ' src', ' data-cfasync="false" src', $tag );
}

add_filter( 'script_loader_tag', 'add_data_attribute', 10, 3 );

这样您就可以定位特定的排队脚本。