2026年5月19日

2026年5月19日

WordPressマルチサイトのセットアップ方法

はじめに

WordPressで複数のサイトを同じインストールで管理したい・マルチサイトを有効化したがネットワーク管理画面にアクセスできない・サブドメインかサブディレクトリかどちらを選べばいいかわからないといった問題の解決方法を解説します。

症状・原因

  • wp-config.phpへのWP_ALLOW_MULTISITEの追加が不完全でマルチサイトが有効化できない
  • .htaccessのマルチサイト用ルールが適用されていない
  • サブドメイン型のマルチサイトでワイルドカードDNSが設定されていない
  • プラグインがマルチサイト非対応でネットワーク有効化できない

解決手順

ステップ1:マルチサイットを有効化する準備をする

# ✅ 現在のWordPressの状態を確認
wp core is-installed --network --path=/var/www/html/ 2>&1
# → Error: This does not appear to be a multisite install. ← まだ未設定

# ✅ パーマリンクをデフォルト以外に設定
wp option get permalink_structure --path=/var/www/html/
# → /%postname%/ ← OK(デフォルトは空→要変更)

# ✅ マルチサイット有効化フラグを wp-config.php に追加
wp eval "
echo file_get_contents('/var/www/html/wp-config.php') ?: 'Cannot read wp-config.php';
" --path=/var/www/html/ | grep -i multisite
# → (何も出なければ追加が必要)

# ✅ wp-config.php に追加(/* That's all, stop editing! */ の前に)
sudo sed -i "s/\/\* That's all, stop editing! \*\//define('WP_ALLOW_MULTISITE', true);\n\n\/\* That's all, stop editing! \*\//" \
    /var/www/html/wp-config.php

# ✅ 確認
grep -n "WP_ALLOW_MULTISITE" /var/www/html/wp-config.php
# → 78: define('WP_ALLOW_MULTISITE', true);

ステップ2:ネットワークをインストールする

# ✅ サブディレクトリ型でネットワーク作成
wp core multisite-install \
    --url="https://example.com" \
    --title="My Network" \
    --admin_email="admin@example.com" \
    --subdomains=false \
    --path=/var/www/html/
# → Added subdirectory multisite support to wp-config.php

# ✅ サブドメイン型でネットワーク作成(ワイルドカードDNSが必要)
wp core multisite-install \
    --url="https://example.com" \
    --title="My Network" \
    --admin_email="admin@example.com" \
    --subdomains=true \
    --path=/var/www/html/
# → Added subdomain multisite support to wp-config.php

# ✅ wp-config.php に追加された設定を確認
grep -A 10 "MULTISITE" /var/www/html/wp-config.php
# → define('MULTISITE', true);
# → define('SUBDOMAIN_INSTALL', false);
# → define('DOMAIN_CURRENT_SITE', 'example.com');
# → define('PATH_CURRENT_SITE', '/');
# → define('SITE_ID_CURRENT_SITE', 1);
# → define('BLOG_ID_CURRENT_SITE', 1);

ステップ3:.htaccessを設定する

# ✅ 現在の .htaccess を確認
cat /var/www/html/.htaccess

# ✅ サブディレクトリ型の .htaccess(自動生成される場合もある)
sudo tee /var/www/html/.htaccess << 'EOF'
# BEGIN WordPress Multisite
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
# END WordPress Multisite
EOF

# ✅ Nginx の場合(/etc/nginx/sites-available/wordpress.conf に追記)
cat << 'EOF'
# サブディレクトリ型マルチサイット
if (!-e $request_filename) {
    rewrite /wp-admin$ $scheme://$host$uri/ permanent;
    rewrite ^(/[^/]+)?(/wp-.*) $2 last;
    rewrite ^(/[^/]+)?(/.*\.php) $2 last;
}
EOF

ステップ4:サブサイトを追加・管理する

# ✅ ネットワーク管理画面にアクセス
# → https://example.com/wp-admin/network/

# ✅ 新しいサブサイトを追加(WP-CLI)
wp site create \
    --slug="shop" \
    --title="Shop Site" \
    --email="shop@example.com" \
    --path=/var/www/html/
# → Created site 2: https://example.com/shop/

# ✅ サブドメイン型でサイトを追加
wp site create \
    --slug="shop" \
    --title="Shop Site" \
    --email="shop@example.com" \
    --path=/var/www/html/
# → Created site 2: https://shop.example.com/

# ✅ ネットワーク内のサイト一覧
wp site list --path=/var/www/html/
# → blog_id  url                    last_updated  registered
# → 1        https://example.com/   2024-01-01    2024-01-01
# → 2        https://example.com/shop/  2024-01-01

# ✅ プラグインをネットワーク全体に有効化
wp plugin activate woocommerce --network --path=/var/www/html/

# ✅ 特定サイトにプラグインを有効化
wp plugin activate contact-form-7 --url=https://example.com/shop/ --path=/var/www/html/

ステップ5:マルチサイットの問題を診断・修正する

# ✅ マルチサイットの設定を確認
wp network meta get 1 --path=/var/www/html/
# → site_id: 1
# → domain: example.com

# ✅ サイトのURLを変更(移転後など)
wp option update siteurl "https://newdomain.com" --path=/var/www/html/
wp option update home "https://newdomain.com" --path=/var/www/html/
# マルチサイットのメインドメインも変更
wp network meta update 1 domain "newdomain.com" --path=/var/www/html/

# ✅ 削除されたサイトを復元
wp site unarchive 2 --path=/var/www/html/
wp site undelete 2 --path=/var/www/html/

# ✅ データベースのマルチサイット関連テーブルを確認
wp db query "SHOW TABLES LIKE 'wp_%';" --path=/var/www/html/ | grep -v "^wp_[a-z]*$"
# → wp_2_posts  wp_2_options  wp_2_postmeta ← サイト2のテーブル

# ✅ スーパー管理者を追加
wp super-admin add editor-user --path=/var/www/html/
wp super-admin list --path=/var/www/html/

注意事項

  • マルチサイットを有効化する前に必ずバックアップを取ってください。define('MULTISITE', true)を追加すると単一サイット構成に簡単に戻せなくなります(データベース構造が変わるため)
  • サブドメイン型(SUBDOMAIN_INSTALL = true)を使用する場合はDNSのワイルドカード設定(*.example.com → サーバーIP)が必須です。共有ホスティングではワイルドカードDNSが使えない場合があります

まとめ

WordPressマルチサイットのセットアップは①wp-config.phpWP_ALLOW_MULTISITE = trueを追加・パーマリンク設定を確認、②wp core multisite-install --subdomains=false/trueでサブディレクトリ/サブドメイン型を選択・MULTISITE等の定数が自動追加、③.htaccessにマルチサイット用RewriteルールをコピーまたはNginxにif条件を追加、④wp site create --slug=でサブサイト追加・wp plugin activate --networkでネットワーク全体にプラグイン有効化、⑤wp network meta updateでドメイン変更・スーパー管理者追加・サイト一覧確認の手順で構築します。

お気軽にご相談ください

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