マルチサイト化した本番環境の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
を使用して、画像とメディアの紐づけを行う。