2

Cloudflare の Rocket Loader を自分の WP サイトで動作させようとしています。WP Visual Editor を除いて、すべて正常に動作します。ここのアドバイスに従いましたが、うまくいきません:

Wordpress で JavaScript タグにカスタム属性を追加するにはどうすればよいですか?

Cloudflare によると、Rocket Loader が JavaScript ファイルを無視するようにするには、スクリプトの前に data-cfasync="false" タグを追加する必要があります。

<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-

Rocket loader が私の 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 を使用しています。

誰でも助けることができますか?

たぶん、あなたは私を正しい方向に向けることができます。

ありがとうございました。

4

3 に答える 3

4

私はこれに対する解決策を見つけました!

この記事に書かれているように: 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');
}
于 2014-03-25T13:42:12.917 に答える
2

type='text/javascript'この例では、タグに属性がないことに注意してください。何らかの理由で、Rocket Loader は... バグdata-cfasync='false'なしで使用する必要がありますか?type='text/javascript'

コードは属性を追加しdata-cfasync='false'ますが、属性を追加する WordPress の動作もオーバーライドしないため、type='text/javascript'Rocket Loader はスクリプトを「無視」しません。

関連するコードがフィルターをサポートしていないため、この WordPress の動作をオーバーライドするのは難しいかもしれません...

于 2013-03-27T20:55:22.523 に答える