MENU

activate_plugins()

activate_plugins() は、WordPress のプラグインをプログラム上で一括して有効化する関数です。

複数のプラグインをまとめて有効化する必要がある場合や、カスタムスクリプトで特定のプラグインを自動的に有効にしたい場合に利用されます。

例えば、特定のプラグインを必須としているテーマやプラグインが、必要なプラグインを強制的に有効化するために活用できます。

目次

機能の説明

activate_plugins() は、指定したプラグインを有効化し、必要に応じてフックを実行します。
WordPress の管理画面でプラグインを手動で有効化するのと同じ動作を、プログラムから実行できる関数です。

  • テーマやプラグインのセットアップ時に、依存するプラグインを自動で有効化
  • カスタムスクリプトで複数のプラグインを一括で有効化
  • プラグインの自動インストール&有効化処理の一部として利用

シンプルなコード例

以下のコードは、hello-dolly プラグインをプログラムから有効化する例です。

activate_plugins('hello-dolly/hello.php');

この関数を実行すると、「Hello Dolly」プラグインが有効化されます。

使い方の説明

activate_plugins() は、引数に有効化するプラグインのパス(ディレクトリ名+メインファイル名)を渡します。

activate_plugins('plugin-directory/plugin-main-file.php');

複数のプラグインを有効化

以下のように array_map() を使用すると、複数のプラグインを一括で有効化できます。

$plugins = [
    'hello-dolly/hello.php',
    'akismet/akismet.php'
];

array_map('activate_plugins', $plugins);

フックを無効化して有効化

プラグインの有効化時にフックを実行しないようにするには、第2引数 $redirectfalse に設定します。

activate_plugins('hello-dolly/hello.php', false);

引数の説明

スクロールできます
引数名説明
$pluginsstring有効化するプラグインのパス
$redirectboolリダイレクトを行うか(通常 false
$network_wideboolネットワーク(マルチサイト)で有効化するか

一緒に使うことが多い関連タグ

is_plugin_active()

プラグインが有効かどうかをチェックする関数。

if (!is_plugin_active('hello-dolly/hello.php')) {
    activate_plugins('hello-dolly/hello.php');
}

deactivate_plugins()

指定したプラグインを無効化する関数。

deactivate_plugins('hello-dolly/hello.php');

get_plugins()

インストールされているプラグインのリストを取得する関数。

$plugins = get_plugins();
print_r($plugins);

追加情報で取得したい場合

get_option('active_plugins') を使う

有効化されているプラグインのリストを取得できます。

$active_plugins = get_option('active_plugins');
print_r($active_plugins);

get_plugin_data()

プラグインの詳細情報を取得する場合は、この関数を使用します。

$plugin_data = get_plugin_data(WP_PLUGIN_DIR . '/hello-dolly/hello.php');
print_r($plugin_data);

想定されるトラブル

activate_plugins() が動作しない

activate_plugins() は管理者権限 (manage_options) が必要です。権限を確認してください。

if (current_user_can('manage_options')) {
    activate_plugins('hello-dolly/hello.php');
}

プラグインのパスが正しいか確認してください。

$plugin_path = 'hello-dolly/hello.php';
if (file_exists(WP_PLUGIN_DIR . '/' . $plugin_path)) {
    activate_plugins($plugin_path);
}

ネットワーク管理で有効化されない

マルチサイト環境では、第3引数 $network_widetrue に設定してください。

activate_plugins('hello-dolly/hello.php', false, true);

Q&A

activate_plugins() は通常のサイトでも使えますか?

はい、シングルサイトでも使用可能です。

activate_plugins() でテーマに依存するプラグインを有効化できますか?

はい、after_switch_theme フックを利用すると、テーマ変更時に必要なプラグインを有効化できます。

add_action('after_switch_theme', function() {
    activate_plugins('my-required-plugin/my-plugin.php');
});

activate_plugins() を実行する際に管理者チェックは必要ですか?

はい、current_user_can('manage_options') を使用して管理者のみが実行できるようにするのが推奨されます。

if (current_user_can('manage_options')) {
    activate_plugins('hello-dolly/hello.php');
}

まとめ

activate_plugins() は、WordPress のプラグインをプログラム上で有効化する関数です。

is_plugin_active()deactivate_plugins() と組み合わせることで、より柔軟なプラグイン管理が可能になります。

管理者権限が必要であり、プラグインのパスを正しく指定することが重要です。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

This site uses Akismet to reduce spam. Learn how your comment data is processed.

目次