WordPress

WordPressのマルチサイトの一つのサイトを解除してシングルサイトに移行する方法

WordPressマルチサイト WordPress

こんにちは!

川口のWEB屋テダスクのSeitoです!

今回はWordPressのマルチサイトの中の1つのサイトを解除して、一つのサイトとして独立させる方法について書いていきたいと思います。

TEDASKのサイトではマルチサイトについては詳しく書いたことがありませんので、簡単にマルチサイトのことを説明してから、作業方法に入っていきたいと思います。

この記事で紹介されている作業は上級者向けの内容です。
作業ではSSH接続による作業や、データベースを扱う作業がありますが、作業を行う前に必ずバックアップをすることと、復元ができる事を確認した上で作業を行うようにして下さい。
尚、この記事を参考したことによって発生した障害や不具合、エラーについては当方では責任を負えませんので、自己責任で作業を行って下さい。
  1. WordPressマルチサイトとは?
    1. マルチサイトにはディレクトリ型とサブドメイン型があります。
  2. WordPressマルチサイトをシングルサイトに移行する前の注意点
    1. Googleサーチコンソールを引き継げない(ディレクトリ型の場合)
  3. マルチサイトをシングルサイトへ移行するまでの流れ
  4. 移行作業の方針について
  5. 移行作業の作業環境について
  6. 移行先サイトのドメインを作成・設定
  7. セキュリティ関係やキャッシュ系プラグインを停止・キャシュの削除
  8. マルチサイトのファイルをまるっと新しいサイト用のディレクトリにコピー
    1. コピーが完了したら目的の場所にコピーされている確認とファイルを移動
  9. 移行先サイトのメディアファイルを特定してuploadsディレクトリに移動
  10. データベースでサイト番号の接頭字テーブルとuser、usermetaテーブルをエクスポート
  11. 移行先サイトのデータベースを作成してそのデータベースにデータをインポート
  12. テーブルの接頭字をwp_に置き換え
  13. wp-config.phpの書き直し
    1. マルチサイトの記述を削除
    2. wp-config.phpのデータベース接続情報を移行先サイトの情報に更新
    3. wp-config.phpのデータベーステーブルの接頭字をwp_に更新
  14. Search Replace DB MasterでURLを移行後のドメインに置き換え
    1. Search Replace DB Masterの使い方 – URLの書き換え
    2. Search Replace DB Masterの使い方 – メディアURLの書き換え
    3. Search Replace DB Masterの使い方 – wp_usermetaテーブルの書き換え
    4. Search Replace DB Masterの使い方 – wp_optionsテーブルの書き換え
  15. パーマリンクを何もせずに保存(.httaccesの更新)
  16. 元のサイトと新しいドメインでプラグインの有効化状況を確認して有効、不要なものは削除
  17. テーマ一覧を見て、使っていないテーマは削除
  18. Google recapTCHAのURL変更(利用している場合)
  19. 元のサイトの.htaccessに301リダイレクト処理を書く
  20. GoogleアナリティクスのURLの変更
  21. Googleサーチコンソールの登録とサイトマップの送信
  22. ASPなどアフィリエイト関係で登録しているURLの変更
  23. 各デジタル広告のランディングURLの更新
  24. ランキングサイトなど登録しているサイトのリンクの変更
  25. 人気の記事や、重要なページ、サイドバー確認
  26. メディアの設定を確認
  27. 最後にマルチサイトのコピー元サイトを無効化して無事完了!
  28. まとめ

WordPressマルチサイトとは?

WordPressマルチサイトとは、一つのWordPressサイトの中に、更に子供WordPressサイトを作る仕組みをWordPressマルチサイトと言います。

分かりやすく例えると、アメブロや無料ブログのサイトの仕組みと似たような仕組みで、親であるアメブロサイトの中に、登録した人のブログサイトがいくつも作成されますよね。

それと同じで、一つのWordPressサイトの中に、何サイトも子供のサイトを作ることができます。

マルチサイトで作ったそれぞれのサイトでは、別々のテーマやプラグインを使ったりすることができますが、あくまで親のWordPressのサイトでインストールしたテーマとプラグインのみ使えるようになっています。

WordPressマルチサイト

これは私のプライベートのサイトでマルチサイトで作ったものの例です。

元々はもう1サイトありましたが、すでに一度シングルサイトに分離に成功したので、今は子供サイトは2つです。

それぞれのサイトは、違いテーマを使っているので、デザインも違います。

マルチサイトにはディレクトリ型とサブドメイン型があります。

マルチサイトの設定方法については今回は省きますが、ディレクトリ型とサブドメイン型があります。

先程の画像を見てもらうとわかるのですが、104ichi.comのあとが「/」に続いて、ディレクトリ名が設定されているのが分かると思います。

これがディレクトリ型でのマルチサイトです。

サブドメイン型は、名前の通りサブドメインで作るパターンです。

私がディレクトリ型にした理由は、このWordPressを作ったのが今から約8年前くらいで、WordPressの知識もサーバーの知識も全然無いときに作ったものなので、サブドメインの設定方法が分からずそのままディレクトリ型にしてしまったためです。

これ本当は、サブドメインの方が良いです。

このあとに移行のプロセスでも書きますが、理由は、サブドメイン型の場合サーチコンソールでURL変更するときに、データを引き継げないためです。

この話についてはのちほど、詳しく見ていきます。

WordPressマルチサイトをシングルサイトに移行する前の注意点

WordPressマルチサイトをシングルサイトに独立させる前に注意するべき点があります。

それは、Googleサーチコンソールのデータを引き継げない(ディレクトリ型の場合)こと、そして、ドメインランクや被リンクによる評価がリセットされる(0からのスタートとなる)点です。

もし、シングルサイトに移行しようとしていサイトが、SEOが上手くいっていたり、何らかの収益がある場合は早まらないで、一度検討して下さい。

私の場合、検索流入は一定数あるものの、更新もほとんどしていないサイトでこれからまた更新などをしようと思っているため、仕方ないことですが、0からのスタートでも良いと判断してシングルサイトへの移行を決意しました。

この点は慎重に検討して下さい。

Googleサーチコンソールを引き継げない(ディレクトリ型の場合)

もしWEBサイトのアドレスを変更する場合、一般的にはGoogleサーチコンソールでのデータを引き継ぎ(URLの変更)を行います。

その時の画面がこのようなページになります。

しかしながら、ディレクトリ型で作成したマルチサイトの場合こういった画面になります。

一番下の説明にもありますが、ルートドメインで登録されているサーチコンソールデータのみしか、引き継ぎできませんということになります。(ステップ2はドメインレベルプロパティのみで実行可能です。

もうこれは仕方が無いことなので、シングルサイトへ移行したあとのドメインで、新しくプロパティを作成しましょう。

このときサイトのドメインランクのことも気になりますよね?

一応Googleによると

  • 新しい URL にリダイレクトすると、リンクのクレジットは失われますか?
    いいえ。301 や 302 のリダイレクトは PageRank の損失につながりません。

参照:https://developers.google.com/search/docs/advanced/crawling/site-move-with-url-changes?hl=ja&visit_id=637847244999974321-3733000532&rd=1

とのことですので、それを信じて301リダイレクトで対応をするようにしましょう。

(とはいえ検索順位は完全にインデックスが引き継がれるまでは1からインデックスが始まりますので注意)

マルチサイトをシングルサイトへ移行するまでの流れ

さて、注意事項を読んだ上で、シングルサイトへ移行すると決まったらいよいよ作業開始です。

作業全体の流れをまとめると以下の内容となります。

  1. 移行先サイトのドメインを作成・設定
  2. セキュリティ関係やキャッシュ系プラグインを停止・キャシュの削除
  3. マルチサイトのファイルをまるっと新しいサイト用のディレクトリにコピー
  4. 移行先サイトのメディアファイルを特定してuploadsディレクトリに移動
  5. データベースでサイト番号の接頭字テーブルとuser、usermetaテーブルをエクスポート
  6. 移行先サイトのデータベースを作成してそのデータベースにデータをインポート
  7. テーブルの接頭字をwp_に置き換え
  8. wp-config.phpを移行先サイトに合わせて書き換え作業
    1. wp-config.phpのマルチサイトの記述を削除
    2. wp-config.phpのデータベース接続情報を移行先サイトの情報に更新
    3. wp-config.phpのデータベーステーブルの接頭字をwp_に更新
  9. Search Replace DB MasterでURLを新しいドメインに置き換え
  10. パーマリンクを何もせずに保存(.httaccesの更新)
  11. メディアファイルのURLを置き換え(wp-content/uploads/sites/【子サイト番号】/→wp-content/uploads/)
  12. サイトが表示されていることを確認
  13. 元のサイトと新しいドメインでプラグインの有効化状況を確認して有効、不要なものは削除
  14. テーマ一覧を見て、使っていないテーマは削除
  15. Google recaptCHAのURL変更(利用している場合)
  16. 元のサイトの.htaccessに301リダイレクト処理を書く
  17. GoogleアナリティクスのURLの変更
  18. GoogleサーチコンソールのURLの変更→できない!
  19. ASPなどアフィリエイト関係で登録しているURLの変更
  20. 各デジタル広告のランディングURLの更新
  21. ランキングサイトなど登録しているサイトのリンクの変更
  22. 人気の記事や、重要なページ、サイドバー確認
  23. メディアの設定を確認
  24. 最後にマルチサイトのコピー元サイトを無効化して無事完了!

なかなかのボリュームなので、大体作業はすんなりいって2時間くらいですが、ハマったときのことも考えて半日以上は余裕があった方が良いかもしれません。

移行作業の方針について

全体の作業の流れの3番を見てもらうと、一旦マルチサイト自体を複製しています。

本来は、独立したい1サイトだけ選別して移行する方がコピーする容量的にも良いとは思うのですが、私のやり方では、一旦全部コピーして、不要なデータを消していくというやり方のほうがより確実だと思いますのでその方針で進めますので、ご理解下さい。

移行作業の作業環境について

マルチサイトをシングルサイトにする多くのサイトは、データ量が多い傾向にあります。

作業方針でも書いたとおり、まるっと複製してどんどん消していくやり方ですので、作業にはSSH接続が必須になります。

なぜSSH接続が必要かというと、FTP接続でファイルを消すという場合数メガのファイルでさえ物凄く時間が掛かります。

SSH接続の場合は「rm」コマンドでディレクトリごと一瞬で削除できます。

また最初に行う複製作業も、「cp」コマンドで素早くコピーができます。

ですので、SSH接続での作業に慣れていない方は、何日も掛かるのを覚悟でFTP接続で頑張るか、私にご依頼いただくか、近くのエンジニアさんにお願いして下さい。

SSH接続が出来る場合は、この記事で説明しているとおりにやっていただければ基本的にはできるかと思います。

ちなみに、今回使うサーバーはCpanelが導入されているサーバーで、カラフルボックス
を使っています。

サーバーはエックスサーバーやさくらインターネットなどを利用している方が多いかと思いますが、ドメインの追加やディレクトリの管理については各サーバーに合わせて作業をして下さい。

移行先サイトのドメインを作成・設定

先ず移行先サイトのドメインを決めます。

移行先サイトは私の場合は、元のドメインのサブドメインを作成して、移行しました。

エックスサーバーの場合は、ドメインを追加することでドメイン用のディレクトリが作成されるので、先ず移行先サイトのドメインを作成してしまいましょう。

セキュリティ関係やキャッシュ系プラグインを停止・キャシュの削除

次に元のサイトでやることですが、セキュリティ関係プラグインやキャッシュ関係のプラグインを停止しましょう。

あと、Jet Packももし使っていたら一時的に止めましょう。

セキュリティ関係のプラグインは、例えばAll in one WP SecurityやWordfence Securityなどが有名ですが、これらのプラグインは一旦止めてしまいましょう。

キャッシュプラグインも同様に停止と、キャッシュの削除もした方が良いです。

これはコピー先で前のURLのキャシュが残ってしまい、原因不明なリダイレクト状態になってしまうのを防ぐためです。

マルチサイトのファイルをまるっと新しいサイト用のディレクトリにコピー

SSH接続を行い、WordPress本体をまるっと移行先サイト用のディレクトリにコピーします。

今回私の場合、blogcanadaというサブドメインを作成して、ドキュメントルートが画像のように設定されているので、このドキュメントルートにコピーします。

コピー先のドキュメントルートの絶対パスを知るために、SSH接続をして「pwd」コマンドで絶対パスを調べます。

ユーザー名は隠していますが、おおよそこんな感じのパスだと思いますので、表示された絶対パスをメモ帳などに控えます。

次に、コピー元のサイトに移動します。

そこで、コピーコマンドを実行してサイト全体をまるっとコピーします。

ちなみにサイト全体とはどこの事を言うかというと、ディレクトリのルートにwp-config.phpやwp-contentのディレクトリなどが置いてあるディレクトリをコピーします。

これからコピーしようとしているディレクトリ直下にwp-関係のファイルやディレクトリがある事を確認します。

そうしたら、1階層上に上がって、コピーコマンドを実行します。

cp -aRv ./コピー元ディレクトリ名 /控えたコピー先ディレクトリの絶対パス

私の今回の例だとこんな感じです。

cp -aRv ./104ichi.com /home/abcdefghij/public_html/blogcanada.104ichi.com

「./」は今いる場所から見てという意味です。

オプションの-a -R -vはコピー作業を表示する+パーミッションも含めてそのまま丸コピ(サブディレクトリも)というオプションです。

実行すると、物凄い速度でコピーしている状況が見えるので、完了するまで待ちましょう。

1GBいかないようなサイトであれば数秒で終わります。

コピーが完了したら目的の場所にコピーされている確認とファイルを移動

コピーが完了したら、ファイルが無事コピーされているか確認します。

問題なくコピーされているのが確認出来ました。

このディレクトリにおいて、.htaccessファイルや.well-know、cgi-binなどのファイルはカラフルボックスがディレクトリ生成時に作るファイルなので、他の方はこれがなくても問題ありません。

コピーは無事に成功しましたが、このディレクトリには実際はwp-関係のファイルが配置されていて欲しいので、この画像の例でいうと104ichi.comというディレクトリの中身をこの階層に持ってこなければ行けません。

なので、104ichi.comというディレクトリに移動して全ファイルをこの階層に移動します。

cd 104ichi.com
mv * ../

これで移動が完了したと思いきや、隠しファイルで.htaccessが移動できていないので、それは個別で移動しちゃいます。

mv * .htaccess* ../

ディレクトリの中身全て無くなったかを確認します。

ls -la

中身が全て空になったら、1階層上に移動して空のディレクトリを削除します。

rm -rf 104ichi.com/

移行先サイトのメディアファイルを特定してuploadsディレクトリに移動

移行先サイトディレクトリにコピーしたWordPressファイルの中に、サイトごとのメディアファイル(画像ファイルなど)が入っているディレクトリを特定します。

各子供サイトのメディアファイルの特定方法ですが、マルチサイトのサイト情報に行くとサイトのIDを知る事が出来ます。

シングルサイト化するサイトのリンクにカーソルを合わせると、リンク先でidというパラメータが表示されますが、画像の例でいうと「2」ですね。

これがサイト番号ですので、覚えておきます。

それでは、コピーしたWordPressのuploadsディレクトリの状況を見てみましょう。

Uplandsディレクトリのパスは

wp-content/uploads

です。

ちょっとごちゃついていますが、uplandsディレクトリの中身です。

これは、トップドメインのメディアファイルが格納されているディレクトリです。

そしてこの中に「sites」というディレクトリがあるのが分かると思いますが、これがマルチサイトのみで生成されるサイトごとのメディアディレクトリです。

この中を見てみると

番号ごとのディレクトリがあることが分かります。

これがサイトごとのメディアディレクトリです。

このディレクトリの中の構成は通常のuplandsディレクトリと同じ構成です。

つまり、今回の例の場合

  • uplands内のsitesを除くファイルを全て削除
  • site/2以外を削除
  • site/2のディレクトリの中身をuplandsディレクトリ直下に移動する

がゴールです。

移動のやり方はみなさんにお任せしますが、私はとりあえず不要なディレクトリ・ファイルを上位階層から削除していきました。

最終的な「blogcanada.104ichi.com/wp-content/uploads」ディレクトリの構成はこんな感じです。

site/2をそのままuploadsに移動しただけです。

データベースでサイト番号の接頭字テーブルとuser、usermetaテーブルをエクスポート

WordPress本体の移行作業が完了したら次はデータベースの移行作業です。

データベースのエクスポートはPHPMyAdminを使います。(楽なので)

コピー元のWordPressのデータベースを見ると、サイトごとに接頭字+サイト番号が付けられているのが分かります。

この番号は先程と同じサイトIDが接頭字の番号として設定されています。

なので、今回の場合、wp_2_となっているテーブルをエクスポートします。

ただ、このサイト番号のテーブルだけではだめで、「wp_users」と「wp_usermeta」も一緒にエクスポートしましょう。

地味だけど該当のテーブルを全て選択してエクスポートします。(wp_usersとwp_usermetaを忘れないこと!)

移行先サイトのデータベースを作成してそのデータベースにデータをインポート

データをエクスポートしたら、当然ですが、移行先サイトのデータベースを作成して、インポートします。

これもPHPMyAdminを使うと楽ですね。

データベース作成とインポート作業については、各サーバーのやり方に沿って作業して下さい。

データベースインポートについても特別な作業はありませんので割愛します。

テーブルの接頭字をwp_に置き換え

移行先サイトのデータベースをインポートすると、当然テーブル名の接頭字に数字がついた状態になっています。(wp_usersとwp_usermeta以外)

なので、それをアナログな作業ですがwp_に変更します。

phpMyAdminの機能で、「テーブル名の接頭字を付け替える」という機能があるみたいなので、それで一気にwp_に変更しましょう。

付け替え先のwp_のアンダースコアを付け忘れると、痛い目に遭うので置き換えは慎重にして下さい!

問題なくwp_に全て変更できれば完了です。

この段階で基本的にデータの移行は完了していますので、あとは設定やURLの書き換えを行っていきます。

wp-config.phpの書き直し

作業する前には必ずwp-config.phpファイルのバックアップを取っておいて下さい。

wp-config.phpは、WordPressの設定ファイルです。

移行先サイトディレクトリには、マルチサイトのデータをそのまま持ってきていますので、そのwp-config.phpをシングルサイト用に書き換え作業を行っていきます。

マルチサイトの記述を削除

wp-config.phpの中身を見るとこんな記述があるはずです。

define('WP_ALLOW_MULTISITE', true );
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', '104ichi.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
define('WP_MEMORY_LIMIT', '128M');

これらは全てマルチサイトのみの設定ですので、全て削除します。

wp-config.phpのデータベース接続情報を移行先サイトの情報に更新

次にデータベースの設定を先程新しく作成した、データベースに合わせて書き直します。

define('DB_NAME', 'dbhoge');
define('DB_USER', 'userhoge');
define('DB_PASSWORD', 'passwordhoge');

恐らくこの辺の情報が変わっているはずなので、新しいデータベースの情報に書き換えてください。

wp-config.phpのデータベーステーブルの接頭字をwp_に更新

先程テーブルの接頭字を書き換えましたが、以下の様にもしwp_になっていなければ、書き直しましょう。

$table_prefix = 'wp_';

Search Replace DB MasterでURLを移行後のドメインに置き換え

ここでの作業ではデータベースの書き換え作業が発生します。
Search Replace DB Masterでは、接続先のデータベース情報を入力しますが、この情報を間違えて書き換えた場合、最悪は別のWordPressのサイトのデータベース情報が書き換わり、WordPressが壊れてしまう可能性があります。
くれぐれも接続するデータベースを確認して作業を行って下さい。

次にやることは、インポートしたデータベースに記述されているコピー元のURLから移行後のドメインに書き換える作業を行います。

そのやり方は、私の場合ですがSearch Replace DB Masterというツールを使います。

このSearch Replace DB Masterは無料で使えますが、登録が必要なので、以下のサイトからメールアドレスを入力してダウンロードリンクから本体をダウンロードします。

Search Replace DB Masterの公式サイトに移動する

Search Replace DB Masterの使い方 – URLの書き換え

Ziipファイルをダウンロードしたら、一度解凍します。

解凍が終わったら、そのファイルをFTP接続で、wp-config.phpが置いてあるディレクトリにフォルダのままアップロードします。

フォルダをアップロードしたら、今度はこのフォルダにブラウザからアクセスします。

当然ですが、追加したドメインにアクセス出来るようになっていることが条件です。

アクセスするとこんな画面が表示されます。

この画面でURLの書き換えを行います。

書き換えるURLは間違いの無いように必ず、移行先サイトのデータベースをphpMyAdminで確認してURLをコピーします。

上の画像の例だと、wp_optionsテーブルの「siteurl」が前のサイトのURLがそのまま残っています。

なので、このURLのドメイン以下の部分のみコピーして、置き換え対象のURLに入力します。

replaceに書き換えるURL(条件)を入力して、withに書き換え後のURLを入力します。

ここで2つ注意があります。

1つは入力するURLは必ずドメイン以下にして下さい。

httpやhttpsは含めないで下さい。

なぜなら、ドメインだけ登録されているデータもあるため、httpsなどを入れてしまうと、書き換え漏れが出てしまうためです。

2つめは、一番最後にスラッシュを入れないで下さい。

1番目と同じ理由で、スラッシュにより条件がおかしくなったり、余計なスラッシュが入ってサイトがおかしくなることがあります。

Database Detailsにはデータベースに接続するための情報を入力します。

間違ってもコピー元のデータベース情報を入れないように注意して下さい。

Database Detailsを入力したら「Test connection」をクリックして接続試験を行います。

もし接続情報が正しければ「Success You are connected」と表示され、それ以降のボタンが有効になります。

そして、次に、「Do a safe test run」をクリックして、書き換え後のデータを確認します。

そうすると、書き換えが発生するテーブルの「Cells changed」の列に数字と「view changes」のリンクが表示されますので、クリックして確認してみます。

やはり見るべきテーブルはwp_optionsのテーブルです。

もし仮にこのtest runでwp_optionsテーブルに変更が0とでた場合、置き換える条件のURLが間違っているはずです。

明らかにおかしいので、しっかり確認して下さい。

小さくて見にくいと思いますが、左側が書き換える前のURLで、右側が書き換え後のURLです。

これをみて間違いなければ、右上の「Close」をクリックして、確認画面を閉じます。

これで特に問題ないというのが分かったので「Search and Replace」ボタンをクリックして、書き換えを実行します。

書き換えのカウントダウンが始まって、書き換えが始まると、先程と同じ様に変更一覧がでますので、完了まで待ちましょう。(「Delete」というボタンが赤くなるまで)

Search Replace DB Masterの使い方 – メディアURLの書き換え

次に、データベースに登録されている画像のURLを書き換えます。

WordPressマルチサイトをシングルサイトに移行

replaceはご自身のサイトの番号に合わせて入力してください。

Search Replace DB Masterの使い方 – wp_usermetaテーブルの書き換え

次に、ユーザー情報が現在wp_2_というテーブルに設定されている状態なので、これもwp_に書き換える作業を行います。(サイト番号はご自身のサイトにあわせて下さい)

今回は書き換え対象のテーブルを画像の様にwp_usermetaテーブルのみを指定します。

問題なければ、書き換えをします。

Search Replace DB Masterの使い方 – wp_optionsテーブルの書き換え

wp_optionsテーブルでも同様に、書き換えますが、指定方法が変わります。

今回は書き換え対象のテーブルをwp_optionsテーブルのみを指定します。

wp_user_rolesに書き換われば書き換え作業はこれで完了です。

最後にDELETEボタンが表示されるので、必ずDELETEをして下さい。

このあとにも、FTPにディレクトリが残る場合もあるのでFTPで確認して必ず削除しましょう。

この作業でWordPressの移行作業はひとまず完了です。

パーマリンクを何もせずに保存(.httaccesの更新)

WordPress移行作業が完了したので、WordPressのダッシュボードに入ってみましょう。

セキュリティ関係のプラグインが動いていなければ、一般的にはドメイン/wp-adminで管理画面にアクセス出来ます。

無事ログインできたら、最初に「設定」→「パーマリンク」を表示します。

そのあと、特に何もせず、「変更を保存」をクリックします。

これは新しいURLで、.htaccessを改めて作成するためです。

パーマリンク構造を更新しました。」と表示されればOKです。

サイトを表示すると問題なく、新しいURLで表示されているかと思います。

元のサイトと新しいドメインでプラグインの有効化状況を確認して有効、不要なものは削除

次にプラグインのページを確認します。

そうすると、有効化されているプラグインと無効化の状態のプラグインがあるかと思います。

これを整理していくのですが、元のサイトで有効化の状況を確認して、不要なプラグインは削除するようにしましょう。

元のサイトと比較する理由は移行先のサイトでプラグインが無効になっていても、実は元のサイトでは有効化して使っていたという事もあるからです。

それは何故かというと、マルチサイトではサイト全体で有効化する設定と、サイト個別で設定する方法があり、サイト全体で有効化されているプラグインは、移行先サイトでは無効になっているためです。

テーマ一覧を見て、使っていないテーマは削除

次に使っていないマルチサイトでインストールしたテーマをまるっとコピーしていますので、現在使っているテーマ以外は削除してしまいましょう。

ちなみに、WordPressの公式テーマ(Twenty Nineteenなど)を1サイトだけ残しておくのが推奨です。

Google recapTCHAのURL変更(利用している場合)

Google recapTCHAとは、スパム防止対策のツールです。

ログイン画面や、コメントのところで利用している場合は、プラグイン有効後にログインできなくなってしまいますので、Google recapTCHAのサイトで、新しくドメインを追加するようにしましょう。

reCAPTCHA
reCAPTCHA is a security service that protects your websites from fraud and abuse.

マルチサイトで登録しているURLにドメインを追記することで、シークレットキーとサイトキーの変更をしなくてすみますよ。

元のサイトの.htaccessに301リダイレクト処理を書く

サイトアドレスを変更したときにとても重要な作業です。

コピー元のマルチサイトのwp-config.phpが置いてあるディレクトリに.htaccessというファイルがあるので、そのファイルに以下の内容を、ファイルの先頭の方に追記します。

<IfModule mod_rewrite.c>
RewriteEngine On
Redirect permanent /マルチサイトディレクトリ https://移行先ドメイン/
</IfModule>

私のサイトの場合はこのような感じです。

<IfModule mod_rewrite.c>
RewriteEngine On
Redirect permanent /blogcanada https://blogcanada.104ichi.com/
</IfModule>

これを上書きして、問題なくリダイレクトされることを確認します。

もしリダイレクトループが発生する場合は、記述が間違っているか、記述する場所が違うかなど他に原因がないか調べてみて下さい。

実質これで、サイトの移行作業は完了になります!

GoogleアナリティクスのURLの変更

サイトが完了したら、次に登録関係のURLの変更を進めていきます。

先ず、GoogleアナリティクスのURL変更です。

「管理」→「プロパティ設定」でデフォルトのURLがあるので、ここを新しいURLに書き換えて保存します。

ちなみにですが、今後Googleアナリティクスのユニバーサルアナリティクスのサポートが終わるので、このタイミングでGA4のプロパティも作ってしまっても良いかも知れませんね。

Googleサーチコンソールの登録とサイトマップの送信

Googleサーチコンソールは冒頭でも説明しましたが、URLの変更作業はできません。

ですので、新しいプロパティとして作成しましょう。

作業方法については次の記事をご覧下さい。

WordPressとGoogleサーチコンソールを簡単に連動する方法 | TEDASK(テダスク)-埼玉県川口市のWEB制作事務所
GoogleサーチコンソールとWordPressを連動する前にGoogleアナリティクスをWordPressに先に組み込んで置くとサーチコンソールの連動が簡単になりますので、まだGoogleアナリティクスの設定が終わっていない方は次の記事を...

ASPなどアフィリエイト関係で登録しているURLの変更

ASPなどを登録している場合、全てのサイトでURLの更新が必要です。

例としては、Amazonアソシエイツ、楽天アフィリエイト、A8ネットなどでしょうか。

各デジタル広告のランディングURLの更新

もし、Google広告やYahoo!広告などを使って集客している場合は、ランディングのURLを変更しましょう。

リダイレクトをしているので、不要と言えば不要ですが、パラメータの取得などデータを厳密に取得している場合は、正規のURLに変更する方が良いです。

ランキングサイトなど登録しているサイトのリンクの変更

ランキングサイトは最近はあまり使われているかたも少ないですが、ブログ村やブログランキングなどがありますね。

こちらも正規のURLに変更しましょう。

人気の記事や、重要なページ、サイドバー確認

人気の記事などは表示されているか、特にアクセスが多いページが壊れていないか、外部リンク、内部リンクなどおかしくないか一通り確認しましょう。

メディアの設定を確認

念のために、何か画像をアップロードしてみて、問題なくアップロードできるか確認しましょう。

もし

「ディレクトリuploads/202x/xxを作成出来ません。この親ディレクトリのアクセス権はサーバーによる各込みを許可していますか?」

とエラーが出たら、メディアの設定を確認しましょう。

「設定」→「メディア」

もしこのファイルアップロードの設定が画像とことなり、URLのパスが指定されている場合は、前のサイトで書き換えが上手くいかなかったパターンが考えられるので、画像のように「アップロードしたファイルを年月ベースのフォルダーに整理」にチェックを入れて保存しましょう。

これでもエラーが解消されない場合は、WordPressのコピーをしたときにパーミッションの設定が引き継がれなかった可能性があるので、確認してみましょう。

最後にマルチサイトのコピー元サイトを無効化して無事完了!

最後に、マルチサイトで移行が完了した子供サイト(ディレクトリ)を無効化します。

なぜ無効化かというと、このあと運営していく中で、何かおかしい事に気付いたときに一応確認出来るようにしておくためです。

もしマルチサイト自体をまるっとローカルだったり、他のサーバーなどで試験的に見られる様な環境を作れる場合は、削除してしまっても構いません。

以上で、マルチサイトをシングルサイトへ移行する作業の全工程が完了です。

まとめ

マルチサイトをシングルサイトへ移行する作業は、慣れている人であればこの通りにやれば出来ると思います。

逆に慣れていない人がやる場合、それなりのリスクがあるので、作業される場合は万全な体制で作業して下さい。

もし、自分では自信が無い方はTEDASKでも作業代行をおこなっておりますので、お気軽にお問い合わせ下さい。

以上、「WordPressのマルチサイトの一つのサイトを解除してシングルサイトに移行する方法」でした!

WordPressやWEB技術、集客、ChatGPTなど最新技術に関する情報を毎週お届けする
メールマガジンを発行しています。
不定期でWordPressの脆弱性情報も配信していますので、
WEB担当者やWEBを学んでいる方などにオススメの無料メールマガジンです!

メールマガジン案内ページに移動する

この記事を書いた人
Toshi Seito

TEDASK代表
WordPressに関する相談実績のべ300件以上、タイムチケットでのWordPressの立ち上げお手伝いのチケット販実績240件以上!WordPressのカスタマイズから、WEBサービス制作、ホームページ制作のご相談はお任せ下さい。

Toshi Seitoをフォローする

コメント

タイトルとURLをコピーしました