MENU

activate_sitewide_plugin()

activate_sitewide_plugin() は、WordPress のマルチサイト環境でネットワーク全体(サイト全体)に対してプラグインを有効化するための関数です。

この関数を使用することで、ネットワーク管理者が個別のサイトごとではなく、すべてのサイトで一括してプラグインを有効化できます。

WordPress 6.1 以降では非推奨の関数であり、代わりに activate_plugin() を使用することが推奨されています。

目次

機能の説明

この関数は、ネットワーク管理者が指定したプラグインをマルチサイト全体で有効化するために使用します。
一般的に、ネットワーク管理用のプラグインや、全サイトで共通して使用するプラグインを一括有効化する際に利用されます。

  • マルチサイト全体で特定のプラグインを有効化する
  • mu-plugins ではなく、通常のプラグインをネットワーク全体で有効にする
  • サイトごとに手動で有効化する手間を省く

シンプルなコード例

以下のコードは、hello.php プラグインをネットワーク全体で有効化する例です。

if (is_multisite()) {
    activate_sitewide_plugin('hello.php');
}

使い方の説明

基本的な使用方法

activate_sitewide_plugin() の基本的な使い方は以下の通りです。

if (is_multisite() && is_network_admin()) {
    activate_sitewide_plugin('plugin-directory/plugin-file.php');
}

activate_sitewide_plugin() の引数

引数説明
$pluginstringプラグインのパス(例: plugin-directory/plugin-file.php

activate_plugin() を使用した代替方法(推奨)

WordPress 6.1 以降では activate_sitewide_plugin() は非推奨となっており、activate_plugin() を使用することが推奨されています。

if (is_multisite() && is_network_admin()) {
    activate_plugin('plugin-directory/plugin-file.php', '', true);
}

activate_plugin() の第3引数に true を指定することで、ネットワーク全体でプラグインを有効化できます。

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

deactivate_plugins()

プラグインを無効化する場合に使用されます。

if (is_multisite() && is_network_admin()) {
    deactivate_plugins('plugin-directory/plugin-file.php', true);
}

is_multisite()

現在の WordPress がマルチサイト環境かどうかを判定する関数です。

if (is_multisite()) {
    echo 'マルチサイトが有効になっています。';
}

is_network_admin()

現在の管理画面がネットワーク管理画面かどうかを判定します。

if (is_network_admin()) {
    echo 'ネットワーク管理画面です。';
}

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

ネットワークに登録されているプラグインを取得する

get_site_option() を使用すると、ネットワークで有効化されているプラグインを取得できます。

$active_plugins = get_site_option('active_sitewide_plugins');
print_r($active_plugins);

想定されるトラブル

activate_sitewide_plugin() が動作しない

  • activate_sitewide_plugin() は WordPress 6.1 以降では非推奨のため、activate_plugin() を使用する
  • is_multisite() を使ってマルチサイト環境であることを確認する
  • is_network_admin() を使ってネットワーク管理画面での処理であることを確認する

ネットワーク全体でプラグインが有効化されない

activate_plugin() の第3引数に true を設定する

activate_plugin('plugin-directory/plugin-file.php', '', true);

network_activate_plugins() を使う方法も検討する

Q&A

activate_sitewide_plugin() はまだ使えますか?

WordPress 6.1 以降では非推奨です。代わりに activate_plugin() を使用してください。

ネットワーク管理画面でのみ実行するには?

is_network_admin() を使用してネットワーク管理画面でのみ処理を実行できます。

if (is_network_admin()) {
    activate_plugin('plugin-directory/plugin-file.php', '', true);
}

特定のプラグインが有効になっているかを確認するには?

is_plugin_active_for_network() を使用して確認できます。

if (is_plugin_active_for_network('plugin-directory/plugin-file.php')) {
    echo 'このプラグインはネットワーク全体で有効です。';
}

まとめ

activate_sitewide_plugin() は、WordPress マルチサイト環境でプラグインをネットワーク全体に対して有効化する関数ですが、WordPress 6.1 以降では非推奨となりました。

代わりに activate_plugin() を使用し、第3引数に true を指定することで、同様の動作を実現できます。

ネットワーク管理者がマルチサイト環境でプラグインを一括管理する際に役立つ関数です。

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

コメント

コメントする

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

目次