2026年5月20日

2026年5月20日

WordPressマルチサイトの設定方法と注意点

はじめに

WordPressマルチサイト(Multisite)は、1つのWordPressインストールで複数のサイトを管理できる機能です。企業グループサイト・地域別サイト・多言語サイトの運用に適しています。設定を誤るとサイト全体に影響するため、手順を正確に把握することが重要です。

症状・原因

  • 複数のWordPressサイトを個別に管理するのが非効率
  • 同じプラグイン・テーマを複数サイトで使いたい
  • マルチサイトを有効にしたらログインできなくなった
  • サブドメインとサブディレクトリどちらを選べばよいかわからない

解決手順

ステップ1:マルチサイト有効化の前提条件を確認する

# パーマリンクが「基本」以外に設定されていることを確認
wp option get permalink_structure

# Apache: mod_rewrite が有効か確認
apache2ctl -M | grep rewrite

# 既存サイトのバックアップを作成
wp db export /backups/pre_multisite_$(date +%Y%m%d).sql
tar -czf /backups/wp-content_pre_multisite.tar.gz wp-content/
【選択肢】
・サブドメイン方式: site1.example.com / site2.example.com
  → DNS ワイルドカード(*.example.com)が必要
  → サーバーのバーチャルホスト設定も必要な場合あり

・サブディレクトリ方式: example.com/site1/ / example.com/site2/
  → DNS設定不要(同一ドメイン)
  → 共有ホスティングでも利用しやすい

ステップ2:wp-config.phpでマルチサイトを有効化する

// wp-config.php: 「That's all, stop editing!」より上に追加

// マルチサイット機能を有効化
define('WP_ALLOW_MULTISITE', true);
# WP-CLIでマルチサイトをインストール(サブディレクトリ方式)
wp core multisite-install \
    --url="https://example.com" \
    --title="My Network" \
    --admin_user="admin" \
    --admin_email="admin@example.com" \
    --subdomains=false  # サブドメイン方式は --subdomains=true

# またはGUI: 管理画面 → ツール → ネットワークの設定

管理画面に表示される設定コードを wp-config.php.htaccess に追加します:

// wp-config.php に追加(WP-CLIが自動追記する場合もある)

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);  // サブドメイン: true
define('DOMAIN_CURRENT_SITE', 'example.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
# .htaccess: WordPress部分を置き換え(サブディレクトリ方式)

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# マルチサイト用
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
</IfModule>
# END WordPress

ステップ3:ネットワーク管理画面でサイトを追加する

ネットワーク管理画面: https://example.com/wp-admin/network/

【新しいサイトの追加】
管理画面(ネットワーク)→ サイト → 新規追加
・サイトのアドレス: site2
・サイトのタイトル: サイト2
・管理者メールアドレス: admin@example.com
→ サイトを追加をクリック
// プログラムでサイトを追加
$site_id = wpmu_create_blog(
    'example.com',         // ドメイン
    '/site2/',             // パス(サブディレクトリ方式)
    'サイト2のタイトル',
    get_current_user_id(), // 管理者ユーザーID
    ['public' => 1],       // オプション
    1                      // ネットワークID
);

if (!is_wp_error($site_id)) {
    echo "サイトID: {$site_id} を作成しました";
}

ステップ4:プラグインとテーマをネットワーク管理する

// プラグインをネットワーク全体で有効化
// ネットワーク管理 → プラグイン → ネットワーク有効化

// functions.php または mu-plugin: サイト追加時に自動でプラグインを有効化
add_action('wpmu_new_blog', function(int $blog_id): void {
    switch_to_blog($blog_id);
    activate_plugin('woocommerce/woocommerce.php');
    restore_current_blog();
});

// 特定サイトのみプラグインを有効化(ネットワーク有効化を使わない場合)
switch_to_blog(2);
activate_plugin('contact-form-7/wp-contact-form-7.php');
restore_current_blog();
// ネットワーク共通のオプションを設定
// ネットワーク管理 → 設定

// WP-CLIでサイト一覧を確認
// wp site list --format=table

// 全サイトのURLを確認
wp site list --fields=blog_id,url,registered,last_updated

// 特定サイトのオプションを確認
wp --url="https://example.com/site2/" option get blogname

ステップ5:マルチサイット固有の問題を解決する

// アップロードディレクトリの分離(デフォルトで自動)
// /wp-content/uploads/sites/2/ など各サイトごとに分離される

// ネットワーク全体のアップロード上限を設定
// wp-config.php
define('UPLOADBLOGSDIR', 'wp-content/uploads/sites');

// サイト間でメディアを共有する場合
add_filter('upload_dir', function(array $dirs): array {
    $dirs['path']    = WP_CONTENT_DIR . '/uploads';
    $dirs['url']     = WP_CONTENT_URL . '/uploads';
    $dirs['basedir'] = WP_CONTENT_DIR . '/uploads';
    $dirs['baseurl'] = WP_CONTENT_URL . '/uploads';
    return $dirs;
});
# ネットワーク全体のWordPressを更新
wp core update --network

# 全サイトのプラグインを一括更新
wp plugin update --all --network

# 全サイトのキャッシュをクリア
wp cache flush --network

# 特定サイトのデバッグ
wp --url="https://example.com/site2/" option get siteurl

注意事項

  • マルチサイットを有効化すると、通常のシングルサイトに戻すことは困難です。必ず事前にバックアップを取得してください
  • サブドメイン方式を使用する場合、DNSのワイルドカード設定(*.example.com)が必要です。共有ホスティングでは対応していない場合があります
  • ネットワーク有効化されたプラグインはすべてのサイトで強制的に有効になります。個別サイトでの無効化ができないため慎重に使用してください

まとめ

wp-config.phpdefine('WP_ALLOW_MULTISITE', true) を追加後、ネットワーク設定画面でサブドメインまたはサブディレクトリ方式を選択します。表示されるコードを wp-config.php.htaccess に追記すればマルチサイットが有効になります。ネットワーク管理画面からサイトの追加・プラグインのネットワーク有効化・テーマ管理ができます。wp core update --network で全サイトを一括更新できます。

お気軽にご相談ください

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