マルチサイト化した本番環境のWordPressの子サイトの一つへ、ローカル環境のWordPressを移行する方法。
- 親サイト
- 子サイト1 //ローカル環境をこちらへコピーする
- 子サイト2
- 子サイト3
- ext
コンテンツ
手順
ローカル環境のデータをエクスポートする
データベースのコピーはadminerを使用してエクスポートする。
サーバーのフォルダ群からはwp-contentフォルダをアップロードするので、ローカル環境からコピーしておく。
本番環境に子サイトを作成する
本番環境のマルチサイトにログインし、サイトネットワーク管理>サイトへ移動し、新規追加をクリックする。
子サイトの情報を入力して、サイトを追加をクリックする。

子サイトのIDを確認する
本番環境のマルチサイトにログインし、サイトネットワーク管理>サイトへ移動し、サイト一覧の中からさきほど作成した子サイト名をクリックする。
サイトを編集の画面へ遷移するので、ブラウザのアドレス欄を確認する。
https://XXXXXXXX/wp-admin/network/site-info.php?id=2
末尾のid=2がサイトIDなので、メモしておく。
本番環境にデータベースを移行する
本番環境のphpMyAdminへアクセスする。すると、テーブル接頭辞が2種類あるのが確認できる。WordPressを初めにインストールした時に使用したテーブル接頭辞mlt_と、さきほど子サイトを作成した時に自動的に追加されたテーブル接頭辞で、子サイトのIDである2が付与されたテーブル接頭辞mlt_2_である。

WordPressではマルチサイトにおいて、テーブル接頭辞を別にすることでテーブル領域を分割している。
さて、ローカル環境のデータベースのテーブル接頭辞はwp_である。このままではマルチサイトでは使用できないので、テーブル接頭辞を置換しなければならない。
wp_➡mlt_2_
まず、ローカルからエクスポートしたファイルを、本番環境のphpMyAdminへインポートする。
次に、wp_のテーブルと、mlt_2_のテーブルを比較する。
- wp_
- wp_commentmeta
- wp_comments
- wp_links
- wp_options
- wp_postmeta
- wp_posts
- wp_termmeta
- wp_terms
- wp_term_relationships
- wp_term_taxonomy
- wp_usermeta
- wp_users
- wp_ewwwio_images
- wp_ewwwio_queue
- mlt_2_
- mlt_2_commentmeta
- mlt_2_comments
- mlt_2_links
- mlt_2_options
- mlt_2_postmeta
- mlt_2_posts
- mlt_2_termmeta
- mlt_2_terms
- mlt_2_term_relationships
- mlt_2_term_taxonomy
ユーザー情報を格納しているwp_usermetaとwp_usersはmlt_2_には存在しないテーブルだということがわかる。wp_ewwwio_imagesとwp_ewwwio_queueはプラグインで追加されたテーブルである。
以上のことから、作業の流れをまとめる。
mlt_2_をすべて削除するwp_usermetaとwp_usersを削除する。wp_➡mlt_2_へテーブル接頭辞を書き換える。
画像、テーマ、プラグインをサーバーへアップロードする
画像アップロード先
- public_html
- wp_content
- uploads
- sites
- 2 //サイトID
- 2022 //年月フォルダの場合
- 2 //サイトID
- sites
- uploads
- wp_content
テーマアップロード先
- public_html
- wp_content
- themes
- seventyseventytwo など
- //ここに格納
- themes
- wp_content
プラグインアップロード先
- public_html
- wp_content
- pluguins
- akismet など
- //ここに格納
- pluguins
- wp_content
注意
- 画像などのメディアは、サイトID名のフォルダの直下に格納する。一方。テーマやプラグインは通常の格納先で良い。
URLを書き換える
phpMyAdminのmlt_2_optionsを表示し、siteurlとhomeを本番ドメイン+マルチサイトのサブディレクトリ名へ書き換える。
次にプラグインBetter Search Replaceを使用し、検索置換を行う。
置換元文字列と置換先文字列を入力し、テーブルを選択する。テーブルはmlt_2_のみ選択できる。

Run as dry runにチェックが入っているのを確認し、検索/置換の実行をクリックする。チェックが入っているとデータベースの検索が行われ、置換は行われない。

検索結果を確認し、問題なければチェックを外して、検索/置換の実行をクリックし、実際に置換を実行する。
ウィジェットのリンク置換は要注意
ブロックテーマが選択されていると、管理画面からウィジェット設定へのリンクがなくなってしまう。その影響なのかサイドバーに設置したウィジェットのリンクが、Better Search Replaceで置換を実行しても置換されなかった。
対策
- クラシックテーマ(親子とも)をサイトネットワークで有効化する。
- 子サイトでクラシックテーマの子テーマを有効化する
- ダッシュボードメニューにウィジェットが出現する
- Better Search Replaceで置換する
- ウィジェットも置換される
移行後に思わぬ挙動を発見した場合は、以下のことを確認する。
メディアが画像を認識していない時
プラグインMedia from FTPを使用して、画像とメディアの紐づけを行う。
