マルチサイトの子サイトを分離して独立させてみた【WordPress】

4 min

複数ブログをWordPressのサイトネットワーク機能を使って運営していましたが、訳あってシングルサイトに戻すことになりました。

マルチサイト解除にあたって子サイトも存続させたかったので、一つのWordPressとして独立させた時の備忘録です。

引っ越し先を用意する

とりあえず分離するために、移動先を用意します。

今のブログはKUSANAGIで環境構築しているので、サブドメインを使って同じサーバーに追加でプロビジョニングしました。

Xserverだとサーバーパネルの[ドメイン] -> [サブドメイン設定]からサブドメインを追加できるので、そこにWordPressをインストールするか、既存のドメインのサブディレクトリにぶら下げればいいでしょう。

インストールできたらそのままで大丈夫です。

本当ならこの記事で紹介している方法でサクッと引っ越ししたかったのですけど、マルチサイトには対応していない(してるけど$199必要)だったので、手動で移植します。

気を付けるポイントさえ押さえておけば、そこまで難しい作業ではありません。

必要なファイルを移動

まずはファイル群を移植して、WordPressを同じような環境にしてあげます。

テーマやプラグイン、アップロードした画像など、必要なファイル群を新しい環境にアップロードしていきましょう。

テーマとプラグインはそのままwp-content以下のthemespluginsをコピーすればよいのですが、画像などは環境によって保存場所が異なります。

wp-content/uploads/sites/【子サイト番号】/

僕の環境では上記のディレクトリに保存されていましたので、それを分離先サイトのwp-content/uploads/以下にコピーしました。

ファイルの移植が済んだら、データベースを流し込んでいきます。

データベースを移植

サイトネットワークを使っていると、子サイトのテーブルは親サイトのデータベースにねじ込まれています。

ちょっとこれが厄介なので、慎重に作業しましょう。

必要なテーブルだけエクスポート

独立させたい子サイトの分だけ、テーブルをエクスポートします。

親サイトのテーブルの接頭辞(プレフィックス)が【wp_】だとしたら、例えばサイト番号2の子サイトの接頭辞は【wp_2_】になっています。

子サイトを分離する時は、この接頭辞のついたテーブルをエクスポートすればいいわけです。

下で説明するように、ちょっとだけ例外があるのですが。。

ユーザー絡みと設定だけは単独

それぞれの子サイト分のテーブルがごちゃごちゃ作られるくせに、ユーザー絡みのとオプションのテーブルだけは全てのサイトで共用になっていました。

これもあわせて移植しておかないと、管理者不在のサイトが出来あがってしまいます。

忘れずにuserusermetaoptionsテーブルもエクスポートしましょう。

置換

アップロードしたメディアファイルは、ディレクトリ構造が変わってしまいました。

メディアライブラリとアップロードファイルの整合性がとれてなかったりの問題があって、そのままではアイキャッチとか記事中の画像が全滅してしまいますので、パスを書き換えてあげる必要があります。

なので、エクスポートしたsqlファイルを開いてURL関係を一気に置換しましょう。

サクラエディタなどの置換機能でガーッとやっつけます。

僕の例だと

wp-content/uploads/sites/【子サイト番号】/

から

wp-content/uploads/

に置換。

保存の際は、文字コードとかが変わってしまわないように気をつけましょう。

流し込み

引越し先のデータベースに、さっき書き換えたsqlファイルをインポートします。

Xserverなら自動的にphpMyAdminが入っていると思いますので、そのままインポートできますね。

僕はConoHaでKUSANAGIを使っているので、そのままではデータベースを簡単に弄れる環境がありません。

なのでphpMyAdminを手動でインストールしました。

接頭辞の整形

インポートが終わって、データベースは完了……というわけにはいかんざき。

プレフィックスがおかしなことになっているので、直します。

wp_【子サイト番号】_【テーブル名】

wp_【テーブル名】

値にも注意

忘れがちなのが、optionsテーブルのoption_nameフィールド。

ここには子サイト番号の振られた値が記録されているので、忘れず書き換えましょう。

ここを直しておかないと、リダイレクトされて管理画面にアクセスできなくなります。

SQLクエリでこんな風に投げれば特定できますよ。

SELECT * FROM `wp_options` WHERE `option_name` LIKE '%_user_roles'

サイトURLの変更

引越し先のWordPressに認識させるサイトURLをデータベースから直接書き換えます。

ヘタに管理画面にログインしてぶっ壊れるのも嫌ですからね……。

SQL文で検索するには下の2行。

SELECT * FROM `wp_options` WHERE `option_name` = 'siteurl'
SELECT * FROM `wp_options` WHERE `option_name` = 'home'

普通はIDの1番目と2番目にいるので、探すまでもないと思いますけど……。

ログインしてチェック

ここまでできたら引越し先のWordPressのアドレスにアクセスして、きちんと動くか確認してみます。

管理画面、表示側などを一通り確認してみて、問題なければ子サイトの分離は成功です。

あとは分離元の子サイトへのアクセスを新サイトに流すためにリダイレクト設定したり、いらなくなった子サイトを削除したりの作業を行いましょう。

分離元サイトからリダイレクト

旧サイトへのアクセスを、新サイトに301リダイレクトしておきます。

僕の場合はサブディレクトリからサブドメインへの移動なので、nginxのconfファイルにこんな記述を加えました。

location ~ ^/【移転元のサブディレクトリ】/ {
  return 301 https://【移転先のサブドメイン】.$host$request_uri;
}

これで、古いURLにアクセスしてくれたユーザーさんを、新しいURLに誘導できますね。

その他Analyticsやサチコ、場合によってはAdSenseなどの設定も見直しましょう。

さいごに

マルチサイトの設置はそこまで苦戦しませんでしたが、作成した子サイトを独立させようとすると大変でした。

サーバー環境とかにもかなり左右されると思いますので、難しいと感じたら無理せず業者に委託するなどした方がいいかもしれません。

大事なサイトは単独のWordPressで作っておくと間違いないです。

未経験からITエンジニアになりました!

今までは趣味としてプログラミングを独学してきたけど、やっぱりこれを仕事にしたい……!

そう思い立ったはいいものの、世間の情勢などもあり未経験でのエンジニア職の中途採用が絶望的な状況

大手転職エージェントを通して何社も面接を受けては落ちてを繰り返し、諦めかけていたのですが……。

気分転換で登録した転職サービスで、とある企業から内定をいただくことができました

同じように未経験からITエンジニアを目指している方へ、どんなに厳しくても可能性がゼロではないことを伝えたい。

ポイントは、IT業界に精通した転職サービスを利用すること。
これだけで少なくとも面接へ進める可能性がグッと高くなります。

あなたがもしIT特化の転職サービスに未登録で苦しんでいるなら、ぜひ利用してみてください。きっと可能性が広がりますよ!

\無料のIT系転職サービス/

はるしか

はるしか

ゲーム・漫画・クルマ・ガジェットなど多趣味な雑食系。
モノづくりが楽しくてプログラミングをポチポチしてたら本業エンジニアになってしまったASPの中の人。
動物占いは子鹿。
忘れっぽい自分へのメモ代わりの記事が多めです。

FOLLOW

カテゴリー:
関連記事