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’) で取得)です。
注意点
必須プラグインは、「自動アップデートが行われない」「管理画面から無効にできない」といったデメリットがあります。通常のプラグインとは管理方法が異なる点に注意してください。
更新日: