CloudFlare的火箭装载机+ WordPress的 - >忽略脚本?(Cloudflar

2019-08-17 11:07发布

我试图让我的WP网站CloudFlare的火箭装载机的工作。 一切正常,除了WP可视化编辑器的罚款。 我跟着建议在这里,但它不工作:

如何添加自定义属性在WordPress的JavaScript代码?

CloudFlare的说,为了使火箭装载机忽略的JavaScript文件,我需要我的脚本之前添加数据cfasync =“假”的标签:

<script data-cfasync="false" src="/javascript.js"></script>    

https://support.cloudflare.com/entries/22063443--How-can-I-have-Rocket-Loader-ignore-my-script-s-in-Automatic-Mode-

火箭装载机不会忽略我的JS文件。

这里是我的代码:

function rocket_loader_attributes( $url )
{
$ignore = array (

'http://www.mysite.com/wp-includes/js/tinymce/tiny_mce.js?ver=349-21274',
'http://www.mysite.com/wp-admin/js/editor.js?ver=3.4.2'

);
if ( in_array( $url, $ignore ) )
{ // this will be ignored
return "$url' data-cfasync='false";
}

return $url;
}
add_filter( 'clean_url', 'rocket_loader_attributes', 11, 1 );

什么是错我的代码?

我目前使用的自动模式火箭装载机。

任何人都可以帮忙吗?

也许你可以点我在正确的方向。

谢谢。

Answer 1:

我发现这个解决方案!

因为它是写这篇文章在: 控制CloudFlare的火箭装载机

你的剧本几乎是正确的,但手动模式被打破了。 你需要切换到自动模式,然后进行一些修改:

function rocket_loader_attributes_start() {
    ob_start();
}

function rocket_loader_attributes_end() {
    $script_out = ob_get_clean();
    $script_out = str_replace(
      "type='text/javascript' src='{rocket-ignore}", 
      'data-cfasync="false"'." src='", 
      $script_out);  
    print $script_out;
}

function rocket_loader_attributes_mark($url) {
    // Set up which scripts/strings to ignore
    $ignore = array (
        'script1.js'
    );
    //matches only the script file name
    preg_match('/(.*)\?/', $url, $_url);
    if (isset($_url[1]) && substr($_url[1], -3)=='.js') {
      foreach($ignore as $s) {
         if (strpos($_url[1], $s)!==false)
           return "{rocket-ignore}$url";
      }
      return "$url' data-cfasync='true";
    }

    return "$url";

}
if (!is_admin()) {
  add_filter( 'clean_url', 'rocket_loader_attributes_mark', 11, 1);
  add_action( 'wp_print_scripts', 'rocket_loader_attributes_start');
  add_action( 'print_head_scripts', 'rocket_loader_attributes_end');
}


Answer 2:

通知,所述标签不具有的示例type='text/javascript'属性。 出于某种原因,火箭Loader要求data-cfasync='false'来而不使用type='text/javascript' ......一个错误?

您的代码确实增加了data-cfasync='false'的属性,但不会覆盖添加的WordPress的行为type='text/javascript'属性还,这让火箭装载机不要“忽视”你的脚本。

这可能是棘手的覆盖这个WordPress的行为,因为在相关的代码不支持的过滤器...



文章来源: Cloudflare's Rocket Loader + Wordpress -> Ignore scripts?