2013-03-10 114 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'); 
}