heroku→heroku WP移転のポイント

coffee

シングルサイトでいくつも作っていたWordpressサイトを、マルチサイトに統合することはあると思いますが、それをheroku→herokuで行ったときの話。たぶんこれはシングルサイトからシングルサイトでも、herokuなら同じ問題にあたると思います。

 

1 マルチサイトの準備

方法はぐぐって他のサイトを。わかりやすく書いているサイトがいくつもあります。
ちなみに、今回は、マルチドメインのマルチサイト形式です。

マルチサイトの構築自体には、シングルサイトとも違うheroku特有の問題はありませんでした。なので、他を見てください。

移転先となる子サイトを作ったら、作業開始です。新サイトにDNSの設定までしてしまいましょう。

 

移転におけるheroku特有の問題かなと思ったのは、元のappからドメイン情報を抜かないと、新しいappにドメインを登録できないので、DNSの設定が反映されるまでは、そのURLがどこにもつながらなくなること。
DNSを先に書き換えて設定の反映を待っても、appに紐づいたドメインを移動するまでは新しいサイトは見えないと思われます。

herokuではないところに工事中みたいなサイトを用意できるなら、先にそちらに向けた方がいいのかなあ。

 

そしてもう一つ。最大の問題は、画像でした。
Wordpressの移転でアイキャッチ画像がまっさらになるというのは一般的なようですが、そんなレベルじゃない。
herokuは画像のアップロードには向かないので、cloudinaryのadd-onを使用しています。

移項データを取り込む前に、cloudinaryのプラグインは有効にしておきます。

 

2 サイトAの移転

サイトAの状態
・画像点数が20もない
・アイキャッチをセルティスラボの拡張アイキャッチでのみ設定していた
※記事内から自動で画像を拾ってアイキャッチにしてくれる便利なプラグイン

始めに移転したサイトAが、この状態でした。

元サイトのダッシュボードの ツール>エクスポート で、画像も全部取り出して、新しいサイトで、インポートです。

画像は一度herokuにアップロードされるので、メディア一覧を開いて全てcloudinaryにアップロード。
セルティスラボのプラグインが、アイキャッチもこれまで通り自動で設定してくれました。

メディアにも新しいappのクラウディナリーにも画像がちゃんと並んでいます。

きれいに、移転完了。

プラグインや外観の設定のし直しがものによって発生するのは、herokuでなくWordpress側の問題なので今は仕方ないということで。

 

3 サイトBの移転

サイトAと違うやり方をしてみようと思いまして。
画像点数はサイトAと同じくらいです。

myPhpAdminで元サイトのデータベースから、wp_usersとwp_usermeta以外のテーブルの内容をSQL形式でエクスポート。

wp_posts → wp_[新サイト番号]_posts という感じで、エクスポートした中身のテーブル名を書き換えて、新サイトのDBをmyPhpAdmin上でインポート。

スマートに移転できた気がしました。

しかし、画像が旧cloudinaryのままなので、元のappを削除できません。
追々、手で移動、記事の書き換えをしなければいけないなと思いました。そこまで画像が多くないので、いつかできるでしょう。

アイキャッチは純アイキャッチだったので、新cloudinayに画像をアップして、再設定。

 

4 サイトCの移転

サイトAの方法がきれいに移転できたので、Cも同じ要領で、エクスポート&インポートをしてみました。

ところが……。

画像情報をインポートし、新appのcloudinaryにアップロードする前に、heroku上からぞろぞろと画像が消去されていく……!
画像が多いサイトだったのです。300以上ありました。
git管理されていないファイルは消えてしまうのがheroku。cloudinaryへの移動が間に合いませんでした。

結局、サイトBと同じように、myPhpAdminを開いてデータベースのエクスポート、テーブル名の書き換え、インポート。
しかし、プラグインの多いサイトで、やたらとインポートで躓きました。
プラグイン特有のテーブルは、必要に応じて一つずつインポートするのがいいみたいです。

画像が全て前のサイトのcloudinaryに置かれたままです。
転送量の制限にひっかかって有料プランなので、dyno動かしてなくても旧サイトのアドオンだけ支払い続けている状態です。新サイトのcloudinaryも、マルチサイトなので他のサイトで制限にひっかかっているので、こちらも有料プラン。
コーポレート契約している、月々のadd-onクレジットの上限に余裕があるのでそれでもいいのですが、そうでない場合はなんとか移動させたいところですね。

ちなみに、herokuのadd-onとして紐づいたcloudinaryでなく、別のサイトのcloudinaryを使うことは、Wordpress上はプラグインのキーの設定をすればできるのですが、herokuでadd-onとして移動させないとクレジットの管理ができませんし、うっかり元のappを消すと丸ごと消えてしまうので不便です。

やり方を調べようとヘルプなどを検索したけれど、まだ見つけられていません。

アイキャッチは純アイキャッチだったため、もちろん欠落していました。

 

5 サイトDの移転

・画像が200を超える

ためらいなく、サイトBのやり方です。データベースを直接取り込み。

記事も多かったのですが、セルティスラボの拡張アイキャッチを使用している記事が多かったので、ほぼ欠落なしです。欠落してしまった記事は中から自動的に取得してアイキャッチにしてくれていました。見た目がスカスカになることはありませんでした。
なんて便利なプラグインでしょう。

まあ、これも、画像をどこかで移動できたらいいなあと思います。

プラグインを設定しながら、プラグイン特有のテーブルを必要に応じて一つずつインポート。

 

 

結論として、画像が40以下なら(メディア一覧が2ページにおさまる)、Wordpressダッシュボードからのエクスポートとインポートがおすすめです。
画像がその点数を超えるときは始めからデータベースをインポートしてください。

拡張アイキャッチは入っていれば欠落してもテキトーな画像で埋めてくれて便利ですが、はじめからこれを使ってアイキャッチを設定するようにしたほうがいい……って、そんなにしょっちゅう引っ越ししないか。