2013-03-10 116 views
2

我想让Cloudflare的火箭加载器在我的WP网站上工作。一切工作正常,除了WP可视化编辑器。我遵循这里的建议,但它不起作用:Cloudflare的Rocket Loader + Wordpress - >忽略脚本?

如何将自定义属性添加到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); 

什么是错我的代码?

我目前在自动模式下使用Rocket Loader。

任何人都可以帮忙吗?

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

谢谢。

+0

我一直在试图找到一个小时的解决方案。请帮忙。 – 2013-03-10 20:04:57

+0

这条线看起来很有趣:'return'$ url'data-cfasync ='false“;'。 – hkBst 2016-04-05 08:55:48

回答

2

请注意示例中的标记不具有type='text/javascript'属性。由于某些原因,火箭加载程序需要使用data-cfasync='false'而没有type='text/javascript' ...一个错误?

您的代码确实添加了data-cfasync='false'属性,但并未覆盖添加type='text/javascript'属性的WordPress行为,这使得Rocket Loader不会“忽略”您的脚本。

这可能是棘手的覆盖,因为relevant code这个WordPress行为不支持过滤器...

+0

这是他们文档中的一个令人讨厌的遗漏。为此发送了一些反馈,进入了黑洞。 – lkraav 2014-07-10 20:08:30

4

我已经找到了解决的办法!

,因为它是写这篇文章在: Controlling Cloudflare Rocket Loader

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

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'); 
}