activated_plugin

カテゴリー
action_hook

公式ドキュメントの和訳

このアクションフックは何らかのプラグインが有効化されると直ちに発動し、有効化されたプラグインを検知します。

プラグインが(アップデートなどで)ひっそり有効化された場合、このフックは発動しません。

WordPress.ORG CodexPlugin API/Action Reference/activated_plugin

公式未記載の補足

  • マルチサイトか単一サイトかを識別するbool値をコールバックメソッドの第2引数に渡してきます。単一サイトの場合は常にfalseが返ります。
  • このアクションフックは「他のプラグインの有効化などを検知する」のに使えますが、管理画面のプラグイン一覧で「プラグインを有効化した際、そのプラグイン自体から自分の有効化を検知してインストール処理など何かしたい」ような場合は、「register_activation_hook()」メソッドで行いましょう。
  • 対応バージョン v2.9.0~

実装例と変数型

// アクションフックにメソッドを指定
add_action(
   'activated_plugin',          // アクションフック名
   'detect_plugin_activation',  // メソッド名
   10,                          // 優先順位、小さいほど優先、初期値10
   2                         // メソッドに渡される引数の個数
);
/**
 * detect_plugin_activation
 *
 * @param string $plugin 有効化されたプラグインのディレクトリパス
 * @param bool $network_activation マルチサイト全体で有効化されたか、
 *                                 現サイトで有効化されたか。
 *                                 単一サイトの場合は常にfalse
 */
function detect_plugin_activation( string $plugin, bool $network_activation = false ) {
    // 何らかの処理
}

WordPressコード上の位置

/wp-admin/includes/plugin.php:726
    if ( ! $silent ) {
        /**
         * Fires after a plugin has been activated.
         *
         * If a plugin is silently activated (such as during an update),
         * this hook does not fire.
         *
         * @since 2.9.0
         *
         * @param string $plugin       Path to the plugin file relative to the plugins directory.
         * @param bool   $network_wide Whether to enable the plugin for all sites in the network
         *                             or just the current site. Multisite only. Default false.
         */
        do_action( 'activated_plugin', $plugin, $network_wide );
    }

参考文献など

WordPress.ORG

WordPress公式(英語版)