このサイトではアフィリエイト広告を利用しています。

必須プラグイン mu-plugins の仕組み

WordPressでは、必須プラグイン(Must-use plugins) という仕組みがあります。通常のプラグインは、管理画面で有効化することで、有効になります。一方、この必須プラグインは、「wp-content/mu-plugins/ フォルダに置いたプラグインが自動的に有効になる」というものです。

プログラムは、テーマの functions.php に置くこともできますが、テーマと密接に関わるプログラムでないかぎりは、プラグインとして別個に管理しておくことが推奨されます。

「プラグインを有効化・無効にした時に通知する」というプラグインを作ってみました。コードは以下のようになります。

<?php
/**
 * Plugin Name: プラグイン有効化・無効化した時に通知する
 * Version: 0.9
 * Author: Fumito MIZUNO
 * Author URI: https://php4wordpress.calculator.jp/
 * License: GPL ver.2 or later
 */

// 有効化するとき
function ounziw_notify_plugin_activated( $plugin ) {
	$subject = "Notice: Plugin Activation.";
	$body = ounziw_plugindata( $plugin );
	$to = get_option( 'admin_email' );
	wp_mail( $to, $subject, $body );
}
add_action('activated_plugin', 'ounziw_notify_plugin_activated');

// 無効化するとき
function ounziw_notify_plugin_deactivated( $plugin ) {
	$subject = "Notice: Plugin Deactivation.";
	$body = ounziw_get_plugin_data( $plugin );
	$to = get_option( 'admin_email' );
	wp_mail( $to, $subject, $body );
}

add_action('deactivated_plugin', 'ounziw_notify_plugin_deactivated');

// メール通知の内容
function ounziw_get_plugin_data( $plugin ) {
	$pdata = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin );

	$user = wp_get_current_user();

	$output = '-- 詳細情報 --' . PHP_EOL;
	$output .= '日時: ' . wp_date(DATE_ATOM) . PHP_EOL;
	$output .= PHP_EOL;
	$output .= 'プラグイン名: ' . $pdata['Name'] . PHP_EOL;
	$output .= 'プラグインURI: ' . $pdata['PluginURI'] . PHP_EOL;
	$output .= 'バージョン: ' . $pdata['Version'] . PHP_EOL;
	$output .= '作者: ' . $pdata['Author'] . PHP_EOL;
	$output .= '必須WPバージョン: ' . $pdata['RequiresWP'] . PHP_EOL;
	$output .= '必須PHPバージョン: ' . $pdata['RequiresPHP'] . PHP_EOL;
	$output .= PHP_EOL;
	$output .= '実行者: ' . $user->user_login . PHP_EOL;
	$output .= '実行者メールアドレス: ' . $user->user_email . PHP_EOL;
	return $output;
}

プラグインを有効化・無効化したとき、

  • 有効化・無効化が実行された日時
  • 該当プラグインの情報
  • 有効化・無効化を実行したユーザー

をメールで通知します。メール通知先は管理者メールアドレス(get_option(‘admin_email’) で取得)です。

注意点

必須プラグインは、「自動アップデートが行われない」「管理画面から無効にできない」といったデメリットがあります。通常のプラグインとは管理方法が異なる点に注意してください。

更新日:

↑このページへのリンク