🗂️ 移行パターン⑤ 上級者向け 難易度:高

WordPressマルチサイトの移行
完全手順ガイド

WordPress マルチサイト(Multisite)は1つのWordPressで複数サイトを管理できる機能です。移行は通常の単体サイトより複雑で、ネットワーク全体の移行・個別サイトの分離独立・サブドメイン型とサブディレクトリ型の切り替えなど複数のパターンがあります。このページではそれぞれの手順を詳しく解説します。

難易度
⭐⭐⭐⭐⭐
所要時間
4〜12時間
技術レベル
上級者向け
WP-CLI
推奨
phpMyAdmin
必須

📋 目次

⚠️ 1. マルチサイト移行の特殊性と注意点

マルチサイトは通常のWordPressと異なる構造を持つため、移行時には以下の点を特に注意してください。

🚨 マルチサイト移行を始める前に必ず確認:
  • All-in-One WP Migration のマルチサイト版(有料)が必要です(無料版はマルチサイト非対応)
  • DBテーブルが通常より多く(wp_2_posts, wp_3_posts…のようにサイトIDごとにテーブルが分かれる)、phpMyAdminでの直接操作が必要になることが多い
  • マルチサイトのサブドメイン型を使っている場合、移行先サーバーでワイルドカードサブドメインの設定が必要
  • プラグイン・テーマはネットワーク全体で管理されているため、個別サイト分離時は再インストールが必要

マルチサイトのDB構造

マルチサイトでは、メインサイトが通常の wp_postswp_options 等を使い、追加サイトは wp_2_postswp_2_options(サイトID=2の場合)というテーブルで管理されます。

テーブル内容
wp_blogsネットワーク内の全サイト一覧
wp_siteネットワーク情報
wp_sitemetaネットワーク設定
wp_postsメインサイト(ID=1)の投稿
wp_2_postsサイトID=2の投稿
wp_2_optionsサイトID=2の設定

🗂️ 2. 移行パターンの種類

🚀
パターンA:ネットワーク全体を別サーバーへ移行
マルチサイトネットワーク全体を別のサーバーにそのまま移す最も一般的なパターン。ドメインが変わる場合は追加でURL置換が必要。
難易度:中〜高
✂️
パターンB:個別サイトをマルチサイトから独立させる
マルチサイト内の1サイトを抜き出して、独立したWordPressとして運用するパターン。DBのテーブル操作が必要。
難易度:高
パターンC:単体サイトをマルチサイトに追加する
既存の単体WordPressをマルチサイトネットワークのサブサイトとして取り込むパターン。
難易度:高

🚀 3. パターンA:ネットワーク全体を別サーバーへ移行

マルチサイトネットワーク全体を新しいサーバーに移行する手順です。基本的な流れはシングルサイトの移行と同じですが、マルチサイト対応の点で異なります。

1
事前準備・バックアップ⏱ 30〜60分
1
ファイル+DB全体をバックアップする

UpdraftPlusのマルチサイト対応版またはFTP+phpMyAdminで全ファイルと全DBテーブルをバックアップします。

2
サブドメイン型の場合:移行先サーバーでワイルドカードサブドメインを設定

サブドメイン型マルチサイト(site2.example.com等)を使っている場合、移行先サーバーでDNSのワイルドカード設定(*.example.com)が必要です。サーバーパネルのDNS設定またはドメインレジストラのDNS管理で設定します。

3
新サーバーのPHPバージョンを確認する

使用しているプラグイン・テーマが新サーバーのPHPバージョンと互換性があるか確認します。

2
新サーバーにWordPressをインストール・マルチサイト有効化⏱ 30分
1
新サーバーにWordPressをインストールする

新サーバーに通常通りWordPressをインストールします(この後インポートで上書きされます)。

2
wp-config.phpにマルチサイト設定を追加する

新サーバーのwp-config.phpに以下を追加してマルチサイトを有効化します:

/* マルチサイト */
define( 'WP_ALLOW_MULTISITE', true );
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false ); // サブディレクトリ型の場合
// define( 'SUBDOMAIN_INSTALL', true ); // サブドメイン型の場合
define( 'DOMAIN_CURRENT_SITE', 'example.com' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );
3
ファイルとDBを移行する⏱ 1〜3時間
1
方法①:All-in-One WP Migration マルチサイト版を使う(推奨)

有料のマルチサイト拡張を購入してネットワーク全体をエクスポート→インポートします。最も手順が少なく安全です。

2
方法②:FTP+phpMyAdminで手動移行する

FTPで全ファイルを新サーバーにアップロードし、phpMyAdminで全テーブルをエクスポート→インポートします。wp-config.phpのDB接続情報を新サーバー用に書き換えます。

3
DBのURL一括置換を行う(ドメイン変更がある場合)

ドメインが変わる場合は全テーブルに対してBetter Search Replaceを実行します。マルチサイトでは wp_2_optionswp_3_options 等のテーブルも対象になるため「全テーブルを選択」が重要です。

4
動作確認・.htaccess 設定⏱ 30〜60分
1
.htaccessにマルチサイト用のRewriteRuleを設定する

マルチサイト用の .htaccess は通常のWordPressと異なります。管理画面 → ネットワーク設定 の画面に表示されるコードをコピーして .htaccess に貼り付けます。

サブディレクトリ型の.htaccess例:
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]
2
各サイトが正常に表示されることを確認する

メインサイト・各サブサイトにアクセスして正常表示を確認します。ネットワーク管理画面(/wp-admin/network/)にもアクセスできることを確認します。

✂️ 4. パターンB:個別サイトをマルチサイトから独立させる

マルチサイト内の特定のサブサイトを抜き出して、独立した単体WordPressとして運用します。最も複雑なパターンです。

⚠️ このパターンの難しさ:マルチサイトのサブサイトはネットワーク共通のコアファイルを使用しており、DBテーブルも wp_2_posts のように独自のプレフィックスを持ちます。独立化には以下の作業が必要です。
  • DBテーブルのリネーム(wp_2_postswp_posts
  • テーブル内のブログIDの整合性調整
  • wp_usermeta・wp_users の移行(ネットワーク共通のためコピーが必要)
  • プラグイン・テーマの再インストール
1
独立させるサイトの情報を確認する⏱ 15分
1
サブサイトのIDを確認する

ネットワーク管理画面 → サイト一覧 でサブサイトのURLにある数字がサイトIDです。例:/wp-admin/network/site-info.php?id=2 ならサイトID=2。

2
対象サイトのDBテーブルを確認する

phpMyAdminで wp_2_postswp_2_optionswp_2_postmeta など「wp_{サイトID}_」で始まるテーブル一覧を確認します。

2
独立先に新しいWordPressをインストールする⏱ 30分
1
新サーバーに通常のWordPressをインストールする

独立させるサイトのドメインで新サーバーにWordPressをインストールします。

2
プラグイン・テーマを再インストールする

マルチサイトで使用していたプラグイン・テーマを新WordPressに手動でインストールします。

3
DBテーブルを独立用に変換してインポートする⏱ 1〜2時間
1
対象サイトのテーブルをエクスポートする

phpMyAdminで wp_2_ プレフィックスのテーブルをすべてエクスポート(SQL形式)します。

2
SQLファイルのテーブル名プレフィックスを置換する

テキストエディタ(VSCodeなど)でエクスポートしたSQLファイルを開き、wp_2_wp_ に一括置換します。

-- 置換前(SQLファイル内)
CREATE TABLE `wp_2_posts` ...
INSERT INTO `wp_2_posts` ...

-- 置換後
CREATE TABLE `wp_posts` ...
INSERT INTO `wp_posts` ...
3
wp_users と wp_usermeta をコピーする

ユーザーテーブルはネットワーク共通のため、必要なユーザーのみをphpMyAdminで抽出して新DBにインポートします。

4
変換したSQLを新DBにインポートする

phpMyAdminで新DBに変換済みSQLをインポートします。

5
Better Search ReplaceでURL置換する

旧マルチサイトのURLを新サイトのURLに置換します。

💡 WP-CLIを使った方法(推奨):WP-CLIの wp site export コマンドを使うとサブサイトのエクスポートが容易になります。ただしWP-CLIのマルチサイト対応コマンドは複雑なため、WP-CLI経験者向けです。詳細はWP-CLI公式ドキュメントを参照してください。

➕ 5. パターンC:単体サイトをマルチサイトに追加する

既存の単体WordPressをマルチサイトネットワークのサブサイトとして組み込みます。

1
コンテンツをXMLでエクスポートする⏱ 15分
1
WordPress標準のエクスポート機能を使う

単体WPの管理画面 → ツール → エクスポート → すべてのコンテンツ でXMLファイルをエクスポートします。

2
マルチサイトに新サブサイトを作成してインポートする⏱ 30〜60分
1
ネットワーク管理画面で新サブサイトを作成する

ネットワーク管理 → サイト → 新規追加 で新サブサイトを作成します。

2
新サブサイトにWordPressインポーターでXMLをインポートする

新サブサイトの管理画面 → ツール → インポート → WordPress でXMLファイルをインポートします。

3
画像などのメディアファイルをFTPで移行する

XMLインポートでは画像が自動取得されない場合があります。FTPで元サイトの wp-content/uploads/ のファイルを新サブサイトの対応ディレクトリにコピーします。

4
テーマ・プラグインの設定を再構成する

テーマのカスタマイズ設定やプラグインの設定はXMLインポートでは移行されません。手動で再設定します。

⚠️ XMLインポートの制限:XMLエクスポート/インポートはコンテンツ(投稿・固定ページ・カテゴリー・タグ・コメント)は移行できますが、テーマ設定・プラグイン設定・ウィジェット設定・カスタムフィールド(一部)は移行されません。完全移行にはDBの直接操作が必要です。

✅ 6. 移行後の確認チェックリスト

🔨 7. よくあるトラブルと対処法

❌ サブドメイン型でサブサイトが「サイトが見つかりません」と表示される

ワイルドカードサブドメインの設定が不足しています。DNSのAレコードに *.example.com を追加するか、サーバーパネルのサブドメイン設定でワイルドカード(*)を有効にしてください。またApacheのVirtualHostにも ServerAlias *.example.com が必要です。

❌ パターンB(個別サイト分離)後に画像が表示されない

マルチサイトの画像はサイトIDごとに wp-content/uploads/sites/2/ のようなディレクトリに保存されています。FTPでこのディレクトリの内容を新サイトの wp-content/uploads/ に正しくコピーし、DB内の画像URLも置換してください。

❌ ネットワーク管理画面にアクセスできない(403エラー)

wp-config.phpの MULTISITE 定数が正しく設定されていないか、.htaccessのマルチサイト用ルールが反映されていません。管理画面 → ネットワーク設定 に表示されるwp-config.phpと.htaccessのコードを再コピーして適用してください。

❌ パターンB後にユーザーのログインができない

マルチサイトのユーザーテーブル(wp_users, wp_usermeta)はネットワーク全体で共有されています。wp_usermeta の capabilities キーが wp_2_capabilities のようにサイトIDつきになっている場合があります。phpMyAdminでwp_usermeta テーブルを確認し、wp_capabilities に修正してください。

❌ URLの置換後も一部のサブサイトが旧URLのまま

Better Search Replaceで「全テーブルを選択」にしていなかった可能性があります。wp_2_optionswp_3_options 等の各サブサイトのoptionsテーブルに旧URLが残っています。全テーブルを対象に再度置換を実行してください。

❓ 8. よくある質問(FAQ)

Q. マルチサイトを通常のシングルサイトに戻すことはできますか?

公式にはマルチサイトを「元に戻す」機能はありません。パターンBの手順でサブサイトを独立させた後、ネットワークのメインサイトについてはwp-config.phpからマルチサイト定数を削除してシングルサイト化することは可能ですが、詳細なDB整理が必要です。

Q. マルチサイトの移行にはどのプラグインが使えますか?

All-in-One WP Migrationのマルチサイト拡張(有料)、Duplicator Pro(有料)が対応しています。無料プラグインはほとんどがマルチサイト非対応のため、手動移行かWP-CLIによる移行が必要になります。

Q. サブドメイン型からサブディレクトリ型に切り替えられますか?

可能ですが、既存の全サブドメインURLが変わるため各サイトへの301リダイレクト設定と全サブサイトのURLのDB置換が必要です。wp-config.phpの SUBDOMAIN_INSTALL の値を変更するだけでは動作しません。切り替えより新しいマルチサイトを構築して移行した方が確実な場合が多いです。

Q. マルチサイトの移行を業者に依頼する場合の相場は?

マルチサイトの移行は技術的に複雑なため、専門業者への依頼が現実的な場合もあります。サイト規模や作業内容によりますが、一般的に5〜30万円程度が相場です。「サイト引越し屋さん」などのWordPress移行専門サービスがあります。

← 前のページ
サブドメイン・サブディレクトリ間の移行
次のページ →
マネージドWordPressへの移行