いやー、ちょっとハマっちゃったので備忘録的に書き残しておこうと思います。

久々に管理画面を触っていたら、メディアアップローダーがちゃんと動かない! という状況に陥りまして、その原因がjQueryの読み込みに関係してたんですよねー。。

Designing a new feature, with jQuery!Photo:Designing a new feature, with jQuery! By Peter Hellberg

WordPressを使う上のに切っても切れないのがjQuery。
各種プラグインがさまざまなjavascriptのフレームワークを使うため、そもそもWordPressに包括されるかたちで、jQueryは導入されることになります。

そのため、特にjQueryの公式サイトからダウンロードしてくる必要もありません。

ただ、ちょっと気になるのがそのロード時間。
内蔵されたjQueryを呼び出すこと自体が、ロード時間の増加につながっている可能性もあります。

そこで、うちでは内蔵のjQueryを使わずに、Google AJAX Libraries APIのキャッシュを使って負担軽減できるようにしています。
これを採用することで常に最新版のjQueryを取得できるメリットもあります。

読み込ませるには、基本的に以下のコードをfunctions.phpに記述するだけ。

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

wp_deregister_script()関数で、WordPressに内蔵されているjQueryの読み込みをキャンセルし、wp_enqueue_script()関数でGoogle AJAX Libraries APIのjQueryを呼び出しています。

これで何の問題もなく使えていたんですが、ここでひとつの問題が。。

この記述だと、管理画面でも内蔵のjQueryを無効にしてしまうわけで、場合によってはそのせいで管理画面のメディアアップローダーなどの機能がうまく動かなくなる恐れがあるんです。

実際にうちではその状況が発生してしまい、メディアアップローダーがきちっと動かない状態に・・・。

そんなこともあって、ちょちょいと上述のコードを変更して、管理画面では内蔵のjQueryを使うようにしたところ、無事元通りにメディアアップローダーが動くように。
外部からjQueryを読み込むことに、まさかこんな弊害が出るとは思いも寄りませんでしたよ。。

というわけで、もしかしたら同様の症状になってハマってしまっている人がいるかもしれないので、管理画面では読み込まずに済ませるよう、以下の記述をシェアしておきます。

if ( !is_admin() ) {
wp_deregister_script('jquery');
wp_enqueue_script('jquery','http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js');
}

これで、管理画面では内蔵のjQueryが、サイト側ではGoogle AJAX Libraries APIが読み込まれるようになりますよ。

ちなみに、http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js/1/としていることで、常に最新バージョンが読み込まれます。
最新バージョンで問題が発生する場合は、この部分に1.5、1.7などバージョン番号を指定してやることで、指定したバージョンで読み込まれるようになります。

また、jquery.min.jsのminを取り除けば、フルバージョンの読み込みになりますよ。

Commentsコメントしてもらえると励みになります