みなさんこんにちは!速ラボ編集部です。
今回は、WordPressのMust Useプラグインとは?mu-pluginsの使い方や仕組みを徹底解説したいと思います。
通称MUプラグインとも呼ばれたりするかと思いますが、このMust Useプラグインとは、簡単にいうと強制的に動くプラグインのことを言います。
通常のプラグインとは違い、管理画面から有効化・無効化するなどの操作はできませんが、逆にいうと、サイト管理者の誰かが勝手に無効化するなどといった事態を防げたり、サイトの運営上必ず有効化しておかなければならないプラグインなどがあれば、今回解説するMust Useプラグインの仕組みを利用することが多いに有効と言えます。
今回は、このMust Useプラグインってなに?という方からMust Useプラグインをサイトに導入したいというエンジニアの方までを対象に徹底解説いたしますので、よろしければぜひ当記事をお仕事などにご活用いただけますと幸いです。
Must Useプラグインとは
Must-useプラグインとは、通常のプラグインとは違い、管理画面から有効化・無効化が出来ないようになっており、サーバー上にあるmu-pluginsディレクトリ内にプラグインのファイルをアップロードしておけば、強制的に有効化されるプラグインのことを言います。
通常はwp-contentフォルダ内の専用ディレクトリである「mu-plugins」(wp-content/mu-plugins)に、プラグインのPHPファイルを置きます。
もしサーバーにmu-pluginsファイルが無ければ、wp-contentの階層に手動で作成すればOKです。

そして、下図のようにプラグイン用のPHPファイルを作成してアップロードしてMUプラグインの仕組みを利用します。

mu-pluginsファイルに置かれたプラグイン(PHPファイル)は、そのサイト(※マルチサイト環境ではネットワーク内の全サイト)で自動的に読み込まれ、強制的に有効化された状態になります。
また、このMust Useプラグインは管理画面の通常のプラグイン一覧の画面には表示されません。

そのため、管理画面からは無効化できないということになります。
もし無効にしたいときは、サーバー上でwp-content/mu-pluginsディレクトリから該当ファイルを削除または移動する必要があります。
詳しくは以下のWordPress公式サイトにて確認できますので、よろしければチェックしてみてください。

Must Useプラグインの特徴
次に、知っておくべきMust Useプラグインの特徴について解説いたします。
Must Useプラグインの特徴は以下になります。
- 常に有効になっており、サイト管理者によって有効化・無効化する必要がない(できない)
- mu-pluginsディレクトリ内にプラグインのPHPファイルをアップロードするだけで有効になる
- 通常のプラグインよりも先に実行され、PHPのファイル名順(アルファベット順)で読み込まれる
- MUプラグインで追加したフックは、他のプラグインより早く適用される
あえて簡単にまとめると、「最初に必ず動く・無効化されない・アップロードだけで即反映」というのが、Must Useプラグインの特徴と言えるかと思います。
Must Useプラグインの作り方
それでは早速、Must Useプラグインの作り方について解説いたします。
Must Useプラグインの作成手順は以下になります。
- mu-pluginsフォルダの作成
- Must UseプラグインのPHPファイルの作成
それぞれ解説いたします。
mu-pluginsフォルダの作成
まずは、WordPressコアファイル上のwp-content/の階層に「mu-plugins」という名前でフォルダを作成してください。
そして、作成したフォルダをFTPソフトなどでサーバーにアップロードしてください。

これでMust Useプラグインの環境は作成完了です。
Must UseプラグインのPHPファイルの作成
次に、作成したmu-pluginsフォルダ内に、プラグインを構成するPHPファイルを作成します。
PHPファイル名はなんでもいいですが、今回は例として「simple-greeting-plugin.php」としたいと思います。
コードの内容はプラグインとしてであれば何でもいいのですが、よろしければ以下の簡単なサンプルコードをご利用ください。
ご自身で作成されたPHPファイルに以下のコードをコピー&ペーストしていただければOKです。
<?php
/*
Plugin Name: Simple Greeting Plugin
Description: 管理画面に簡単な挨拶を表示するWordPressプラグインです。
Version: 1.0
Author: 山田 太郎
*/
add_action('admin_notices', function() {
echo '<div class="notice notice-success is-dismissible"><p>こんにちは!これはシンプルなWordPressプラグインです。</p></div>';
});作成できたら、下図のようにFTPソフトなどを利用してmu-pluginsフォルダにアップロードしてください。

はい、ここまでできたらMust Useプラグインの作成は完了です。お疲れ様でした!
試しにご自身の管理画面の画面上を確認してみてください。

上図のように、お知らせバーが表示されていることと思います。
ちなみに余談ですが、以下のプラグイン情報の記述がなくても動くようですが、後々のことを考えたら記述しておいても良いかもしれません。
/*
Plugin Name: Simple Greeting Plugin
Description: 管理画面に簡単な挨拶を表示するWordPressプラグインです。
Version: 1.0
Author: 山田 太郎
*/Must Useプラグインの注意点
Must Useプラグインには注意点がいくつかありません。
注意点としては以下になります。
- アップデート通知が出ない
- アクティベーションフックが動かない
- サブディレクトリは読み込まれない
それぞれ解説いたします。
アップデート通知が出ない
Must Useプラグインは、管理画面にアップデート通知が表示されません。
(※下図のようにプラグインのアップデート通知が行われません)

そのため、最新版の情報を自分で確認し、必要に応じて手動で更新する必要があります。
常に安全に使うためには、開発元の公式サイトやリポジトリを定期的に確認し、手動で更新を行うことになります。特にセキュリティ関連のプラグインをMust Use化している場合は注意が必要です。
アクティベーションフックが動かない
通常のプラグインでは、有効化や無効化のタイミングで「アクティベーションフック」や「デアクティベーションフック」が実行されます。
例えば以下の関数があります。
- 有効化時:register_activation_hook()関数
- 無効化時:register_deactivation_hook()関数
- プラグイン削除時:register_uninstall_hook()関数
通常のプラグインであれば、これらを利用して初期設定の保存やデータベーステーブルの作成、終了処理などが自動で行われたりします。
しかしMUプラグインではこれらのフックが一切実行されないため、こうした仕組みに依存するプラグインは正しく動かない可能性があります。
もしMust Use化したい場合は、必要な初期化処理を別の方法で実装するか、手動で対応する必要があります。
サブディレクトリは読み込まれない
WordPressはmu-pluginsフォルダ直下にあるPHPファイルしか自動で読み込みません。
そのため、通常のプラグインのようにサブディレクトリにまとめてファイルを配置しても認識されません。
もし複数のファイルやライブラリを整理して使いたい場合は、mu-plugins直下に「ローダー用の PHP ファイル」を置き、その中でrequireやincludeを使ってサブディレクトリ内のファイルを読み込む必要があります。
これを忘れると、想定した機能がまったく動かないというトラブルにつながります。
こちらの対処法に関しては、次のセクションで解説いたしますのでよろしければご確認ください。
複数のプラグインを作成して対応する方法
PHPを作成してMust Useプラグインを作成できたのはいいですが、通常のプラグインでは、プラグインを構成する大量のPHPファイルやJSファイルなどをひとまとめにした一つのファイルで作られることが普通かと思います。
ですが、今のままではPHPファイルむき出しでmu-pluginsフォルダにアップロードすることになるため、プラグインとして本格的なものを利用できない可能性が多いに出てきてしまいます。
こちらの問題の解決方法は何も難しくありません。
まずローダーのPHPファイルとして「load.php」というファイル名(ファイル名はなんでも大丈夫です)を作成し、load.phpに以下のコードをコピー&ペーストしてください。
<?php // mu-plugins/load.php
require WPMU_PLUGIN_DIR.'/simple-greeting-plugin/simple-greeting-plugin.php';作成できたらmu-pluginsフォルダにアップロードしてください。
そして、「simple-greeting-plugin」という名前でプラグイン用のフォルダを作成してください。
作成したら、すでに作成済みのsimple-greeting-plugin.phpをそのsimple-greeting-pluginフォルダの中に移動させてください。
諸々完了したら下図のイメージになるかと思います。

これで複数のプラグインを作成して対応する方法は完了です。
もし2つ目以降プラグインを増やしていく場合は、下図のようにrequireで読み込むコードを同じように追加して対応してください。

この時ファイルのパスに関して正しくなければ読み込まれないのでご注意ください。
まとめ
今回は、WordPressのMust Useプラグインとは?mu-pluginsの使い方や仕組みを徹底解説いたしました。
Must Useプラグイン(MUプラグイン)は、その名のとおりWordPressで必ず有効化される特別なプラグイン です。
管理画面から有効化や無効化を操作できないため、意図せず停止されるリスクを防ぎ、サイト運営に欠かせない機能を安定して提供できます。
「強制的に動く」という特性は一見制限のようにも思えますが、セキュリティや安定稼働の観点からは大きなメリットです。
サイト管理者として安心して運用したい場合や、開発者が必ず動作させたい仕組みを組み込みたい場合には、MUプラグインを活用することが非常に有効といえます。
当記事が「Must Useプラグインってなに?」と疑問を持っていた方や、実際に導入を検討しているエンジニアの方のお役に立てば幸いです。

コメント