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

How to bypass CloudFlare rocket script if wp_enqueue_script is used to add scripts?

我只是用谷歌搜索了这个,但没有检索到任何具体信息。我在 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 忽略

我能做什么?

此致

编辑:

非常感谢@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 );

您可以尝试使用 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 );

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