いろんなサイトで何度もWPの引越しはしているが、念のためメモ。
URL階層構造を変えない場合は、ざっくり言うと、
1.ファイル一式の移動
2.データベース内のデータの移動
3.データの微調整
をすればOK。
ファイル一式の移動はあたりまえ過ぎるので、説明を割愛。
データベース内のデータの移動
移動元のphpMyAdminでデータをエクスポート
注意点
・テーブルは全てを選択(普通はデフォルトでそうなっている)
・オプションはまず「構造」にチェックを入れ、さらにその下の4つもチェック(※5つ目の「CREATE PROCEDURE/FUNCTIONを追加」は不要)
<<追記>>
phpMyAdminのバージョンによって、表示される項目が若干変わってくる。
例えば、phpMyAdmin 3.4.11.1の場合、「生成オプション」の部分は下の画像のように全てのチェックボックスにチェックを入れた状態で問題ない。
もう1例をあげると、phpMyAdmin 4.0.10だと下のように「CREATE DATABASE / USE コマンドを追加する」という項目が表示された。
この場合、下のように1番目、3番目のチェックボックスを外したところ問題なかった。(3番目の「CREATE PROCEDURE / FUNCTION コマンドを追加する」はチェックを入れても問題ない)
・さらにオプションの「データ」にチェックを入れ、その下の項目のチェックを外す(新しいphpMyAdminだとこれも不要)
<<追記ここまで>>
・「ファイルに保存する」にチェックを入れる(※この項目がなければ気にしない)
移動先のphpMyAdminでデータをインポート
空のDBを作製して、上でエクスポートしたデータを指定してインポートすればOK。
データの微調整
ドメインが変わっているのであれば、引き続きphpMyAdminで
wp_optionsテーブルを開き、「siteurl」と「home」の値を変更後のドメインに修正して保存すれば完了。
<<さらに追記>>
サイトの動き自体は上のやり方で問題なさそうだが、実はドメインが変わる場合は、wp_optionsの「siteurl」と「home」以外にも、旧ドメインの値が残っていることが判明。
例えば、通常のWordPressサイトの場合、http://ドメイン名/feed/(例) にアクセスすると、フィードが表示される。
そのソースを見るとわかるが、「guid」という欄に記事のURLが表示されており、ドメインを引っ越したサイトだとここに旧ドメインが残ってしまうのだ。
これは気持ち悪いということで、wp_optionsと同じくwp_posts内の旧ドメイン名を新しいものに変えていく。
ただ、記事数が多いと到底手作業でしていられないので、ここはsqlをphpmyadmin上で実行するのが得策。
どうせsqlを実行するなら、上で触れたwp_optionsの値も一緒に変えてしまおう。
UPDATE wp_options SET option_value=REPLACE(option_value,"旧ドメイン","新ドメイン") WHERE option_name = 'home' OR option_name = 'siteurl'; UPDATE wp_posts SET post_content=REPLACE(post_content,"旧ドメイン","新ドメイン"); UPDATE wp_posts SET guid=REPLACE(guid,"旧ドメイン","新ドメイン"); UPDATE wp_postmeta SET meta_value=REPLACE(meta_value,"旧ドメイン","新ドメイン");
※テーブルがwp_~ではなくwp01_~のように違ったらそれに合わせて上の表記を変えること
なお、mysqlを使う通常のケースだけでなく、sqliteを使った場合でも、sqlitebrowser等のツールを使えば同じように一括で変換することができる。
以上。
慣れてしまえば大した手間にはならない。
、、、とも言えないか。