2026年5月20日
2026年5月20日
WordPressのスーパー管理者を設定する方法(マルチサイト)
はじめに
WordPressのマルチサイト(ネットワーク)環境では、通常の「管理者」とは別に「スーパー管理者」というロールが存在します。スーパー管理者はネットワーク全体を管理でき、プラグインのインストールやサイトの追加・削除が可能です。
スーパー管理者と通常管理者の違い
| 権限 | 通常管理者 | スーパー管理者 |
|------|----------|--------------|
| 自分のサイト管理 | ✓ | ✓ |
| プラグインインストール | ✗ | ✓ |
| テーマインストール | ✗ | ✓ |
| 新規サイト追加 | ✗ | ✓ |
| ユーザー一括管理 | ✗ | ✓ |
| ネットワーク設定 | ✗ | ✓ |
解決手順
ステップ1:WP-CLIでスーパー管理者を設定する
# スーパー管理者を追加
wp super-admin add username
# 複数ユーザーを一度に追加
wp super-admin add user1 user2 user3
# スーパー管理者一覧を確認
wp super-admin list
# スーパー管理者から除外
wp super-admin remove username
ステップ2:DBを直接操作して設定する(WP-CLIが使えない場合)
-- wp_sitemeta テーブルの 'site_admins' を確認
SELECT meta_value FROM wp_sitemeta WHERE meta_key = 'site_admins';
-- スーパー管理者を追加(PHPシリアライズ形式)
-- 注意: 既存のserialize値を壊さないよう慎重に操作すること
-- WP-CLIが使える場合はそちらを推奨
ステップ3:コードでスーパー管理者権限をチェックする
// 現在のユーザーがスーパー管理者か確認
if (is_super_admin()) {
// スーパー管理者のみの処理
echo 'ネットワーク管理者です';
}
// 特定ユーザーがスーパー管理者か確認
if (is_super_admin($user_id)) {
// $user_id がスーパー管理者の場合
}
// スーパー管理者にのみ表示するメニューを追加
add_action('network_admin_menu', function() {
if (!is_super_admin()) {
return;
}
add_menu_page(
'ネットワーク設定',
'ネットワーク設定',
'manage_network',
'network-custom-settings',
'render_network_settings_page',
'dashicons-networking',
3
);
});
ステップ4:マルチサイトのサイト管理者をWP-CLIで管理する
# ネットワーク内の全サイト一覧
wp site list --fields=blog_id,url,public,archived
# 特定サイトの管理者を確認
wp user list --blog_id=2 --role=administrator
# 特定サイトに管理者を追加
wp user set-role username administrator --blog_id=2
# ネットワーク全体でユーザーを検索
wp user list --network --fields=ID,user_login,user_email
注意事項
- スーパー管理者権限は非常に強力です。付与するユーザーは最小限にしてください
is_super_admin()はマルチサイト環境でのみ意味があります。シングルサイト環境ではmanage_options権限で代替してください- スーパー管理者はWordPressのロールシステムとは独立して
wp_sitemetaテーブルで管理されています
まとめ
マルチサイトのスーパー管理者は wp super-admin add username で追加し、is_super_admin() で権限チェックできます。スーパー管理者はネットワーク全体の管理権限を持つため、付与は慎重に行ってください。