WordPressで外部のjQueryなどを参照させる方法と、重複読み込みさせない作法

wordpress.png

基本ですが、自分用メモ。

WordPress のとあるプラグインが使っている jQuery を新バージョンに差し替えたい。とか、自前ホストしているものでなくて、Google CDN から読ませたい場合などに使える方法です。

プラグインのソースに手を加えるのはイヤだし。と思ったら基本作法だった様子。

また、自作テンプレートやプラグインから  jQuery を使う際に、複数回読み込ませない作法にも触れます。

WordPress用プラグインが使うjQueryを差し替える(wp_register_script)

WordPress 用プラグインが使う jQuery を、Google CDN 上の 1.10.1 に差し替える場合は、functions.php などに以下のコードを書くと良いでしょう。

if (!is_admin()) { // 管理画面のjQueryは変えない
    wp_deregister_script('jquery');
    wp_register_script('jquery', '//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js', false, null);
}

モバイル向けに別バージョンの jQuery を使う事もできます。

if (!is_admin()) { // 管理画面のjQueryは変えない
    wp_deregister_script('jquery');
    if (IS_MOBILE_THEME) { // 自前でモバイル判別定数を作成
        // mobile -> jQuery 2.x
        wp_register_script('jquery', '//ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js', false, null);
    } else {
        // Other -> jQuery 1.x
        wp_register_script('jquery', '//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js', false, null);
    }
}

wp_deregister_script() は、Wordpress がデフォルトで登録済みのハンドルの上書きに必要です。つまり、ハンドル ’jquery’ は登録済み。という事。

WordPress で登録済みの「スクリプト用ハンドル」一覧は以下にあります。

引数の詳細も上記公式サイトから。今回は外部の jQuery を参照させているため、クエリストリングを削除させるパラメータを喰わせています。

管理者チェックをしているのは、ダッシュボードの jQuery を別バージョンに差し替えると一部機能が動かなかったためです。というか、PC向けは差し替えないほうがいいのかも。という気もしなくはありませんが。詳細は不明です。

自前のテンプレートでjQueryを読ませる場合 - プラグインとの重複を避ける(wp_enqueue_script)

プラグインの jQuery 読み込みとの重複を回避しつつ、自前テンプレートで jQuery を読み込ませるには、自前テンプレート内で以下のように記述します。

<?php wp_enqueue_script('jquery');

詳細仕様は公式サイトを確認ください。

こうすれば、jQuery を読んでいるプラグインを無効化しても jQuery を読んでくれますし、プラグインを有効化しても、(まっとうな書き方のプラグインなら)重複読み込みされません。

 

実は、今回の主要件は、プラグイン「WordPress Popular Posts」が、設定・訪問者によって jQuery を読んだり読まなかったりするので、テンプレート側で確実に jQuery を読ませたかった事、とか、モバイル・PC向けに違う ver の jQuery を使わせたい。とかとかから色々掘っていって辿り着いた。という感じ。

しかし WordPress は設計がしっかりしているので本当に助かります。

Hatena Pocket Line

コメントを記入