マルチサイトの WordPress をシングルサイトに戻す方法

問題

WordPressでは別ドメインやサブドメイン毎にプラグイン等を共有するマルチサイト機能があり便利ですが、規模が大きくなってきたり 1 つのプラグインで問題が発生すると全サイトに影響が出るなど諸刃の剣でもあります。
シングルサイトに戻したい場合の手順例を説明します。

事前準備

大量に子サイトがある状態からシングルサイトに戻したい場合、DB 全体ではなく対象サイトにマップされた SiteID を確認しておく必要があります。シングルサイト構成に戻した場合の動作を確認することが目的のため、既存の環境には手を加えないほうが賢明です。そこで、同一バージョン、同一言語の WP バージョンを用意して新規にインストール後、プラグインも同一のものをインストールしておきます。プラグインによっては独自に DB テーブルを利用するものがあるためです。

手順

シングルサイト構成でのテーブル名を確認

WordPress 4.4 日本語版 ( wordpress-4.4-ja.zip ) にプラグインをインストールした状態で以下のようなテーブルがあります。wp_ewwwio_images などは素の WordPress ではなく、プラグインが利用するテーブルです。
私の環境では 13 のテーブルがありましたが、ここは利用するプラグインなどによって変わってくるので、ご自身の環境に合わせて読み替えてください。

MariaDB [wp.neoflow.jp]> show tables;
+-------------------------+
| Tables_in_wp.neoflow.jp |
+-------------------------+
| wp_commentmeta          |
| wp_comments             |
| wp_ewwwio_images        |
| wp_links                |
| wp_options              |
| wp_postmeta             |
| wp_posts                |
| wp_term_relationships   |
| wp_term_taxonomy        |
| wp_termmeta             |
| wp_terms                |
| wp_usermeta             |
| wp_users                |
+-------------------------+
13 rows in set (0.00 sec)

テーブルを指定してバックアップ

mysqldump の -t オプションを利用すると特定のテーブルのみバックアップを取ることができます。つまり、以下のような mysqldump コマンドの基本形ができます。

mysqldump -u root -p -t wp_commentmeta wp_comments wp_ewwwio_images wp_links wp_options wp_postmeta wp_posts wp_term_relationships wp_term_taxonomy wp_termmeta wp_terms wp_usermeta wp_users > wp_site.sql

上記はテーブル名を列挙しただけなので上記で確認した SiteID を入れて既存環境に合わせたものにします。例えば SiteID が 2 なら以下のような感じです。あとは出力された wp_site.sql を編集してテーブル名をシングルサイト構成向けに直してインポートしてやれば OK です。

mysqldump -u root -p -t wp_2_commentmeta wp_2_comments wp_2_ewwwio_images wp_2_links wp_2_options wp_2_postmeta wp_2_posts wp_2_term_relationships wp_2_term_taxonomy wp_2_termmeta wp_2_terms wp_2_usermeta wp_2_users > wp_site.sql
スポンサーリンク