公式ドキュメントの和訳
このアクションフックは何らかのプラグインが有効化されると直ちに発動し、有効化されたプラグインを検知します。
WordPress.ORG Codex – Plugin 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公式(英語版)
- Codex
- Code Reference