WordPressでjQuery本体をCDN等に置き換える際は管理画面に読み込ませないようにする

Ads

ちょっと気になったことがあったのでメモがてら
ご紹介。WordPressには最初からjQueryが
同梱されており、わざわざ自分で本体をアップ
ロードする必要が無いように出来ていますが、
バージョンが最新のものではありません。
そこで、自分で最新のものにする方も多いので
すが、普通に読み込むと管理画面で問題が生じます。

大した内容じゃ無いんですが、ちょっと気になったのでメモ。GoogleなどのCDNを使ったら管理画面おかしくなった、という方はちょっとお試しいただくといいかもです。

管理画面でなんかいろいろ動かなくなっちゃった・・


をかもとさんのWordPress 同梱の jQuery 以外を使う方法という記事でwp_enqueue_scriptを使って外部スクリプトを読み込む方法が書かれていますが、このまま書くと管理画面にも読み込んだCDNが反映されます。

そうすると、管理画面内でjsで動かしているサイドメニューのアコーディオンやテーマで設定されたカスタム背景のカラーピッカーなどが動かなくなる事があるので、管理画面はそのままのほうがいいかもしれません、と思ったので書いてみます。

[note]をかもとさんの記事にも補足されました :)[/note]

コード

もちろん、管理画面も含め、全体通してCDNを使うのであれば以下をfunctions.phpに書けばOK牧場です。

wp_deregister_script('jquery');
wp_enqueue_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js', array(), '1.6.1');

しかし、管理画面にもCDNを読み込むと前述のような問題が起こる場合もありNG牧場なので、管理画面には読み込まないようにします。

function load_cdn() {
	if ( !is_admin() ) {
		wp_deregister_script('jquery');
		wp_enqueue_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js', array(), '1.6.1');
		}
	}
	add_action('init', 'load_cdn');

!is_admin()で判定してます。逆に、管理画面だけに読み込みたいなら is_admin()とするだけ。

をかもとさんはかなり昔に同じような記事を書いています(wp_enqueue_script のススメ)ので今回は略したんだと思いますが、ちょっと気になったのでなんとなく補足的なことをしてみました。必ず動かなくなるってわけでは無さそうですけど、管理画面内でプラグイン使ってたりするとこういった状況に陥る方も少なくない気がしますので、「もしかして・・」と思われたらソース確認してみてくださいませ。