【WordPressマルチサイト】子サイトを別ドメインへ引っ越す

マルチサイト化したWordPressから、子サイトのみを分離する方法。分離後は別ドメインのサブディレクトリへ引っ越す想定。

  • 親サイト(メイン):ID=1
    • 子サイト:ID=2 //こちらを別ドメインへ引っ越し
    • 子サイト:ID=3
    • etc

親サイトのみ分離する場合は、子サイトを消去して、マルチサイトを解除したほうが早そうである。

まず、子サイトを独立させる。

マルチサイトの子サイトの引っ越し手順

引越し先を準備する

引越し先の環境を準備する。

受け入れ先はルート直下に作成したサブディレクトリ型WordPressフォルダのtestとし、新規データベースを作成する。

サーバーにフォルダを格納する

受け入れ先のサーバーのtestフォルダに必要なフォルダをアップロードしていく。

マルチサイトの子サイトから移動させるフォルダはこちら。

  • public_html
    • wp-content
      • plugins //移動する
      • themes //移動する
      • uploads
        • 2022
        • sites
          • 2 //サイトID
            • 2022 //移動する

マルチサイト内で共有されているプラグインフォルダとテーマフォルダを丸ごと移動する。

子サイトで使用していないプラグインやテーマフォルダは事前に削除しておくと、アップロード時間の短縮につながる。

メディアの移動は。uploadsフォルダのsitesフォルダ内がサイトIDごとに分割されているので、対象IDのフォルダを移行する。

メモ

  • 親サイトの場合、uploads直下のフォルダ(年限津に仕分けている場合は年月名)に格納されている。子サイトの引っ越しでは不要なフォルダである。

データベースを移植する

親サイトのテーブル接頭辞は、mlt_とする。

子サイトのテーブル接頭辞は、数字の2よりも大きな整数がサイトID として付与され、テーブル接頭辞はmlt_2_のようになるので、親サイトと子サイトのテーブルは見分けることができる。

では、シングルサウとのデータベースと子サイトのデータベースを比較してみる。

  • シングルサイトのデータベース
    • 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
  • マルチサイトの子サイトデータベース
    • 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_usermetawp_usersが生成されていないことがわかるので、エクスポート時にいっしょにエクスポートし、本番phpMyAdminにインポートする。

データベースを修正する

mlt_2_optionssiteurlhomeを修正する。

また、テーブル接頭辞mlt_2_を変更する。

URLを置換する

Better Search Replaceでサイト内リンクを置換する。

メディアに画像を紐づける

Media from FTPを使用する。

変更してもブラウザ表示上で思い通りにいかないときは、ブラウザキャッシュを削除する。