WordPress のテーマで、依存している Plugin をインストールしてもらう
必要な plugin がある場合に、通知を表示してインストールしてもらう
コード
required_plugins.php
<?php class RequiredPlugins { public static function setup($plugins) { add_action('init', function () use ($plugins) { if (!current_user_can('activate_plugins')) return; foreach ($plugins as $plugin) { if (self::is_plugin_active($plugin['key'])) continue; add_action('admin_notices', function () use ($plugin) { $name = $plugin['name']; $url = network_admin_url( "plugin-install.php?tab=search&type=term&s=${name}&plugin-search-input=Search+Plugins" ); echo "<div class=\"error\"><p>The <a href=\"${url}\">${name}</a> is required.</p></div>"; }); } }); } public static function is_plugin_active($key) { include_once(ABSPATH . 'wp-admin/includes/plugin.php'); return is_plugin_active("${key}/${key}.php"); } }
呼び出す時
functions.php
<?php ... require_once 'required_plugins.php'; ... RequiredPlugins::setup([ ['key' => 'import-users-from-csv', 'name' => 'Import Users From CSV'] ]);
注意
['key' => '...', 'name' => '...']
の形の要素の配列で、複数の通知を表示させるkey
はプラグインのディレクトリ名、wp-content/plugins
以下から確認してくるname
は何でもいいが、ユーザーがわかるようにするis_plugin_active
で一応プラグインが有効化されているかどうかの判定ができる