WEB

WordPressマルチサイト(複数ドメイン型)をシングルサイトに移転する方法

複数ドメイン型で運用していたWordPressのマルチサイトを委託されサーバーを移し替えることにしました。
サーバーはエックスサーバーを使用しており通常の手順で再構築からDNSの設定までを行いましたが、メインのサイト(マルチサイトのID番号が1)以外が2日経っても反映されません。

その時は次のように表示されていました。

無効なURLです。
プログラム設定の反映待ちである可能性があります。
しばらく時間をおいて再度アクセスをお試しください。

DNS切り替えが原因かなと思っていましたが、これはもしやと思いエックスサーバーに問い合わせをしてみました。
その返信内容がこちら。

誠に恐れ入りますが、
WordPressのマルチサイト機能につきまして、
当サービスにおきましては
複数ドメイン型、およびサブドメイン型のマルチサイトには
対応いたしておりません。このため、移転なさる場合は
それぞれのドメイン名にWordPressをインストールいただき、
それぞれのサイトに対する移転作業を行っていただく
必要がございますことをご了承くださいませ。※「WordPress シングルサイト 移転」といったような
キーワードにて関連の情報をご確認いただけるかと存じます。よろしくお願い申し上げます。

まさかマルチサイトが使えないんで?はという予感が当たりました。(翌日には返信が返ってきてエックスサーバーのサポート対応はGoodです!)

それはさておきこれが本題です。

シングルサイトに移転するための方法についていろいろと調べてみましたが情報量が少ないようです。あまりマルチサイトを作るメリットもないことからこれといった記事が見当たらず、結局フォルダの中身やデータベースを直接確認しながら作業を行いました。やってみれば意外にスムーズにできたのでその情報をまとめます。
(サイトの構造によって多少の違いはあると思います。ぜひ参考にしてください。)



 

1. WordPressの新規インストール

まずは移転先のサーバーに新規でWordPressをインストールします。
加えてデータベースも新規で作成し、デフォルトのWordPresシングルサイトが使える状態にしておきます。
(WordPressのバージョンとPHPのバージョンは元のサイトに合わせておいたほうがエラー発生確率が下がります。)

 

2. 該当サイトの必要なファイルをダウンロード

元のサイトにFTPなどで接続し、必要なファイルだけをダウンロードします。
(元のサイトは特にいじらないのでバックアップは必要に応じて行っておいてください。)

必要なファイルは以下の3つです。

1. テーマ(themes) ※適用しているテーマ
wp-content/themes/[テーマ]

2. プラグイン(plugins) ※使用中のもの
wp-content/plugins/[プラグイン]

3. アップロードデータ(uploads) ※画像など
wp-content/uploads/site/[対象のid]/[画像(.jpgや.png)が入っているフォルダ]

(対象サイトのIDがわからない場合は、ネットワーク管理者の管理画面から「サイト」をクリックし、対象のサイトにマウスオーバーをすると下部に表示することができます。)

 

3. データベースをエクスポート

phpmyadminなどのツールを使用して、対象サイトIDの付いているテーブルをエクスポートします。
基本的には以下の10テーブルほどだと思いますが、使用しているプラグインなどにより対象のテーブルは他にもある場合があります。
(wp_はデータベース作成時に設定した接頭辞です。設定により異なります。)

wp_[対象のid]_commentmeta
wp_[対象のid]_comments
wp_[対象のid]_layerslider
wp_[対象のid]_links
wp_[対象のid]_options
wp_[対象のid]_postmeta
wp_[対象のid]_posts
wp_[対象のid]_terms
wp_[対象のid]_term_relationships
wp_[対象のid]_term_taxonomy

 

4. 新規サーバーにアップロード

ダウンロードしたファイルを、新規構築したWordPressのシングルサイトの同じ場所にアップロードします。
基本的には以下のディレクトリ直下にアップロードすればOKです。

wp-content/themes
wp-content/plugins
wp-content/uploads

エクスポートしたテーブルもphpmyadminなどからインポートします。
接頭辞を「wp_[対象のid]」から「wp_(設定により異なる。)」の変更して、デフォルトのテーブルを上書きします。
(接頭辞がwp_だと一般的なのでセキュリティ上好ましくありません。)

テーブルがインポートできてもこのままでは管理画面にアクセスできませんので1行だけ書き換えます。
wp_optionsの中身を表示して「roles」と検索します。
これが旧サイトの「wp_[対象のid]_roles」になっていると思うので「wp_user_roles」に修正します。
(修正する文字は接頭辞に合わせます。)

 

5. 確認・細かい修正

以上で終わりです。慣れれば意外と速く出来ます。
テーマやプラグインなどはデータベースを元に自動で切り替わっていますので、特に何も設定する必要はないはずです。
細かいエラーなどが出ていないか確認し問題なければ完了です。