WordPress のプラグインは、決まった順番で読み込まれます。「並び順を変えるとサイトが速くなる」と言われることもありますが、並び順で速さや SEO は変わりません。
この記事では、読み込みの順番がどう決まるかと、あるプラグインを先に読み込ませたいときの方法を、WordPress のコードで確かめた結果とあわせてまとめます。
読み込みの順番の決まり方
| もの | 順番 |
|---|---|
| mu-plugins(wp-content/mu-plugins) | ふつうのプラグインより先に、ファイル名の順で読み込む |
| ふつうのプラグイン | データベースの active_plugins という一覧の順で読み込む |
| active_plugins の順 | プラグインを有効にしたときに、フォルダ名の順に並べ直される |
| 管理画面の「プラグイン」の一覧 | 見た目の並びだけ。読み込みの順番とは関係ない |
つまり、ふつうに使っているかぎり、プラグインはおおむねフォルダ名のアルファベット順に読み込まれます。
WordPress のコードで確かめた
| 決まり | WordPress のファイル |
|---|---|
| 有効にしたときに一覧を並べ直す(sort) | wp-admin/includes/plugin.php の activate_plugin() |
| mu-plugins をファイル名の順に並べる | wp-includes/load.php の wp_get_mu_plugins() |
| mu-plugins を読み込んでから、ふつうのプラグインを読み込む | wp-settings.php |
例外:自分を先頭に動かすプラグインもある
このサイトの作業環境(WordPress 7.1・有効なプラグイン 33 個)で active_plugins を見たところ、名前の順なら先頭は ai-engine のはずなのに、先頭が tablepress になっていました。
調べると、TablePress の中に入っている Freemius という部品(有料版の販売などに使うもの)の fs_newest_sdk_plugin_first() が、自分のプラグインを active_plugins の先頭に動かしていました。同じ部品を使うプラグインがいくつかあるとき、いちばん新しい版の部品を先に読み込むための仕組みです。
このように、プラグインが自分で順番を書きかえることもあるので、順番が名前の順になっていなくても、すぐに不具合というわけではありません。
あるプラグインを先に読み込ませたいとき
「このプラグインの関数を、別のプラグインの中で使いたい」など、先に読み込ませたいときは、順番を書きかえるより、次の方法が確実です。
| 方法 | 向いているとき |
|---|---|
| 自分で書く処理は mu-plugin にする | ほかのどのプラグインより先に動かしたいとき(mu-plugins はいつも先に読み込まれる) |
| plugins_loaded のフックで動かす | ほかのプラグインの関数を使いたいとき(すべてのプラグインを読み込んだあとに動く) |
| function_exists・class_exists で確かめてから使う | 相手のプラグインが止まっているときにも、エラーにしたくないとき |
// すべてのプラグインを読み込んだあとに動かす(相手のプラグインの関数を安全に使う)
add_action( 'plugins_loaded', function () {
// other_plugin_function は、使いたい相手のプラグインの関数の名前に変える
if ( ! function_exists( 'other_plugin_function' ) ) {
return; // 相手のプラグインが止まっているときは何もしない
}
// ここで相手のプラグインの関数を使う
} );
active_plugins の順番を直接書きかえる方法もありますが、プラグインを有効にし直したときや、今回の Freemius のようにプラグインが書きかえたときに、元に戻ってしまいます。
サイトを速くしたいとき
並び順を変えても、読み込むプラグインの数と中身は同じなので、速さは変わりません。速くしたいときは、次のことを見直します。
- 使っていないプラグインを止めて、消す
- 同じことをするプラグインを 2 つ入れていないか確かめる
- 決まったページでしか使わないプラグインを、ほかのページでは読み込まないようにする(Plugin Load Filter などのプラグインでできる)
- ページキャッシュを使う


