2026年10月2日

2026年10月2日

WP-CLIのnetworkコマンドでマルチサイトのネットワーク設定を操作する方法

WordPressマルチサイトのネットワーク全体に効く設定は、WP-CLI の wp network meta と wp site option で確認・変更できます。あわせて、プラグインのネットワーク有効化やネットワーク管理者の管理、全サイトのデータベース更新といった「ネットワーク単位」の操作も WP-CLI でまとめて行えます。この記事では、子サイト単位の操作ではなく、ネットワーク全体の設定を扱う方法に絞って説明します。

前提:ネットワークの設定はどこに保存されているか

マルチサイトの設定は2つの層に分かれています。各子サイトの設定(サイト名やパーマリンクなど)は wp_2_options のようなサイトごとのテーブルにあり、wp option で操作します。一方、ネットワーク全体の設定(ユーザー登録の可否、アップロード容量の上限、ネットワーク有効化されたプラグインなど)は wp_sitemeta テーブルにあり、こちらを扱うのが wp network meta と wp site option です。

紛らわしいのは名前です。WordPress のコアでは歴史的な経緯から「site」がネットワークを指す場面があり、get_site_option() はネットワークの設定を読む関数です。WP-CLI の wp site option も同じ考え方で、子サイトではなくネットワークの設定を扱います。子サイト個別の設定を変えたいのに wp site option を使ってしまう、あるいはその逆、という取り違えがよく起きます。

ここで紹介するコマンドは WP-CLI 2系を前提にしています(2026年10月現在)。サブコマンドやオプションはバージョンで増減することがあるため、wp help network meta などで手元のヘルプも確認してください。変更系の操作の前には、ネットワーク全体のデータベースを書き出しておきます。

wp db export ~/backup/network-$(date +%Y%m%d-%H%M).sql

wp network meta でネットワーク設定を確認・変更する

wp network meta は、引数にネットワークIDを取ります。通常のマルチサイトではネットワークは1つで、IDは 1 です。

# ネットワーク設定の一覧
wp network meta list 1

# 特定のキーだけを見る
wp network meta list 1 --keys=site_name,admin_email,registration

# 1つの値を取得
wp network meta get 1 site_name

よく確認・変更するキーには次のようなものがあります。

  • site_name:ネットワーク名
  • admin_email:ネットワーク管理者の連絡先メールアドレス
  • registration:新規登録の可否。none(無効)、user(ユーザー登録のみ)、blog(ログイン済みユーザーのサイト作成のみ)、all(両方)
  • blog_upload_space:各サイトのアップロード容量の上限(MB)
  • upload_space_check_disabled:容量チェックを無効にするかどうか
  • fileupload_maxk:1ファイルあたりのアップロード上限(KB)
  • upload_filetypes:アップロードを許可する拡張子(スペース区切り)

値を変更するには update を使います。

# 新規登録を止める
wp network meta update 1 registration none

# サイトごとのアップロード上限を500MBにする
wp network meta update 1 blog_upload_space 500

# 変更後の値を確認
wp network meta get 1 registration

管理画面の「ネットワーク設定」で変えられる項目の多くはこの仕組みで保存されているため、設定内容を記録したり、複数のネットワークで揃えたりする作業を CLI で行えます。

シリアライズされた値は直接書き換えない

active_sitewide_plugins(ネットワーク有効化されたプラグイン)や site_admins(ネットワーク管理者の一覧)は、配列をシリアライズした形で保存されています。中身を見るだけなら --format=json が読みやすい形です。

wp network meta get 1 active_sitewide_plugins --format=json

これらの値を update で直接書き換えると、形式を誤ったときにプラグインが一斉に無効になったり、管理者がログインしても権限を失ったりするおそれがあります。後述する wp plugin activate --network や wp super-admin のように、目的に合った専用コマンドを使ってください。

wp site option で同じ設定を扱う

wp site option も wp_sitemeta を操作しますが、ネットワークIDを指定せず、現在のネットワークを対象にする点が異なります。ネットワークが1つの構成では、こちらのほうが短く書けます。

wp site option get site_name
wp site option update site_name "社内サイト群"

wp option get blogname --url=https://example.com/shop/ が子サイトの設定、wp site option get site_name がネットワークの設定、と対にして覚えておくと取り違えを防げます。

プラグインとテーマをネットワーク単位で管理する

プラグインをネットワーク全体で有効化するには、--network を付けます。

# ネットワーク有効化 / 解除
wp plugin activate akismet --network
wp plugin deactivate akismet --network

# ネットワーク有効化されているプラグインの一覧
wp plugin list --status=active-network

ネットワーク有効化と、各子サイトでの個別有効化は別の状態です。ネットワーク有効化を解除しても、サイトごとに有効化されていたものはそのまま残ります。整理するときは、両方の状態を確認してから作業してください。

テーマは、ネットワークで「利用可能にする」かどうかを切り替えます。利用可能にしたテーマは、各子サイトの管理者が自分のサイトで選べるようになります。

wp theme enable twentytwentyfive --network
wp theme disable twentytwentyfour --network

ネットワーク管理者とユーザーを確認する

ネットワーク管理者(特権管理者)は、全サイトの設定やプラグイン、ユーザーを変更できる強い権限です。担当者が変わったときは一覧で棚卸しします。

wp super-admin list
wp super-admin add tanaka
wp super-admin remove sato

ネットワーク全体のユーザーを確認するには wp user list --network を使います。どのサイトにも所属していないユーザーや、退職者のアカウントが残っていないかを見る用途に向いています。自分自身を remove してしまうと管理画面からの復旧が難しくなるため、作業前に別の管理者が残っていることを確かめてください。

WordPress更新後のデータベース更新

マルチサイトでコアを更新すると、管理画面で「ネットワークのアップグレード」を求められることがあります。WP-CLI では次のコマンドで全サイトのデータベース更新を実行できます。

wp core update-db --network

サイト数が多いネットワークでは管理画面からの更新が途中で止まりやすいため、CLI で実行するほうが状況を把握しやすくなります。実行前のバックアップは通常の更新と同じく取っておきます。

ネットワーク全体に効くその他の --network オプション

いくつかのコマンドは --network を付けるとネットワーク全体が対象になります。

# 全サイトのテーブルを対象にURLを置換(まず dry-run)
wp search-replace 'old.example.com' 'new.example.com' --network --skip-columns=guid --dry-run

# ネットワーク共通のトランジェント(サイトトランジェント)を削除
wp transient delete --all --network

--network があるかどうかはコマンドごとに異なります。対応していないコマンドを全サイトで実行したい場合は、wp site list --field=url で取得したURLを順に --url= に渡すループを使います。

よくあるつまずき

  • 設定を変えたのに反映されない:オブジェクトキャッシュを使っている環境では wp cache flush を実行し、管理画面を再読み込みして確認します。
  • wp network meta がエラーになる:シングルサイトでは使えません。wp eval 'var_dump( is_multisite() );' でマルチサイトとして読み込まれているかを確認します。
  • 子サイトの設定が変わってしまった:wp option と --url= の組み合わせを使っていないか、コマンド履歴を見直します。

まとめ

  • ネットワーク全体の設定は wp_sitemeta にあり、wp network meta(ID指定)と wp site option(現在のネットワーク)で扱う
  • 子サイトの設定は wp option --url=。名前が紛らわしいので対にして覚える
  • シリアライズされた値は直接更新せず、wp plugin activate --network や wp super-admin を使う
  • コア更新後は wp core update-db --network で全サイトのデータベースを更新する
  • 子サイトの作成や一覧などサイト単位の操作は wp site コマンドの役割になる

お気軽にご相談ください

お見積りへ お問い合わせへ
▲