左坊のメモ帳

WordPress など

*

WordPressのmu-pluginsフォルダとは

      2018/08/29

must-use plugins(mu-plugins)とは?

普通にWordpressサイトを運営しているだけだとあまり見かけない用語ですが、マルチサイトで必ず有効にしたいプラグインを設定したり、Wordpressアップデートの自動更新有効化・解除の設定をしたりする場合などに使用します。

スポンサーリンク

must-use pluginsとは

「must-use」とあるとおり、「必ず使用する」プラグインを入れておくための特別なフォルダです。

その特別なフォルダはどこにあるかというと、

wp-content/mu-plugins/

です。

ただ、Wordpressをインストールしただけではこのmu-pluginsフォルダは作成されないので、必要になった場合は、手動でmu-pluginsフォルダを作成する必要があります。

mu-pluginsフォルダの動作について

WordPressが起動すると、通常のプラグインやテーマなどよりも先に、このフォルダに入れられたプラグインが有効になります。必ず有効にしたいものや、WP管理画面から無効化されたくないものを入れておくと効果的ですね。

ただし、実際の動きとしては、mu-plugins直下に入っているphpプログラムが実行されるだけなので、単にプラグインをmu-pluginsにアップロードするだけでは動きません。

プラグイン毎に、マルチサイト対応などの言及があるものは、その手順に従ってインストールしてください。

mu-pluginsの定義場所など

must-use pluginsのディレクトリはデフォルトでは「wp-content/mu-plugins」ですが、wp-config.phpに以下の記述をすることで任意のフォルダを指定することもできます。

define( 'WPMU_PLUGIN_DIR', WP_CONTENT_DIR . '/mu-plugins' );
define( 'WPMU_PLUGIN_URL', WP_CONTENT_URL . '/mu-plugins' );

ちなみデフォルトの定義は、以下の場所に記載されています。

wp-includes/default-constants.php

mu-pluginsフォルダの使い方

WordPressアップデートの自動更新有効化・解除の設定

WordPressのコアファイル、プラグイン、テーマのアップデートは、初期設定では、

  • 自動更新:WPコアマイナーアップデート、翻訳ファイル
  • 手動更新:その他

です。

mu-puginsは、この設定をいじる際に使えます。

自動更新設定について調べてみると、設定方法(記述方法)は大きく分けて以下の2種類があります。

  1. 「define」で始まる記述
  2. 「add_filter」で始まる記述

このうち、一つ目の「define」で始める記述は、「wp-config.php」に直接記載します。

2つ目の「add_filter」については、「funcitons.phpに記載します。」という情報が多いのですが、「mu-plugins」を使った方がよいでしょう。

その理由は、3つ。

  1. functions.phpに記載してしまうとテーマ変更すると設定しなおし。
  2. WordPressのファイルの読み込み順(処理順)の問題。

1つ目の理由は分かりやすいです。テーマ変更しない、とか、設定し直しは気にしない、ということであればfunctions.phpで全く問題ないです。

2つ目の理由は、Wordpress本体のコアアップデートの実行にかかわる処理が、テーマファイルのフォルダ内にあると何か不一致やら矛盾やら競合やらが発生してしまうのではないかなという不安が出ないこともないということです。
(つまり、WPの中身に詳しくないので漠然とした不安が・・・)

そして3つ目の理由が、

 3.Wordpressサポートサイトでは、「mu-pluginsの中に記述するのが最良です。」と書いてあるから、です。

≫Configuring Automatic Background Updates « WordPress Codex

The best place to put these filters is in a must-use plugin.

「それらのフィルター設定は、must-use pluginsを利用するのがベストです。」です。

WordPressプラグイン・テーマのアップデートを自動化する設定方法

以下のコードを記述したファイルを、拡張子phpで保存して、wp-content/mu-plugins/にアップロードしてください。

<?php

add_filter( 'auto_update_plugin', '__return_true' );
add_filter( 'auto_update_theme', '__return_true' );

常に有効化しておきたいプラグインを入れておく方法

基本的には、各プラグインのサポートサイトで手順を確認してから設定するのがよいです。

が、mu-autoloader.phpというサンプルコードがWordpressサポートサイトに出ていたので備忘のため転記してます。

≫Must Use Plugins « WordPress Codex

<?php
/**
 * This file is for loading all mu-plugins within subfolders
 * where the PHP file name is exactly like the directory name + .php.
 *
 * Example: /mu-tools/mu-tools.php
 */

$dirs = glob(dirname(__FILE__) . '/*' , GLOB_ONLYDIR);

foreach($dirs as $dir) {
    if(file_exists($dir . DIRECTORY_SEPARATOR . basename($dir) . ".php")) {
        require($dir . DIRECTORY_SEPARATOR . basename($dir) . ".php");
    }
}

上記コードを、mu-autoloader.phpというファイル名で保存して、mu-pluginsにアップロードします。

あとは、mu-pluginsフォルダに、常時有効化しておきたいプラグインをフォルダごとアップロードします。
すると、フォルダ名.phpというphpがあるものについては、有効化されます。

 - WordPress