WordPressサイトを別ドメインや別ディレクトリに移行する際、データベース内でドメインやパスの置換が必要になりますよね。簡単にphpmyadminを使って、SQLで直接一括置換してみたのですがうまく動作しませんでした。
調べたところ、使用しているプラグインによってはデータベースにURLをシリアライズして保存する為、移行前と移行後のURLの文字数が違う場合にうまくいかなくなるようです。
文字列を置換してくれるプラグインもあるようですが、今回は
DATABASE SEARCH AND REPLACE SCRIPT IN PHP
という置換ツールを使って問題なく移行する事ができましたので、備忘メモとして残しておきます。
DATABASE SEARCH AND REPLACE の使い方
まず作業前にデータベースのバックアップを取っておく事をおすすめします。
上記のリンクから最新の v3.1.0 (2019/11/22現在)をダウンロードしてください。
移行先の wp-congfig.php と同じ階層に、ダウンロード&解凍した Search-Replace-DB-master フォルダごとアップロードして、ブラウザからそのフォルダにアクセスします。
下記画面の通り、移行前の旧URLと、移行後の新URLを入力し、「dry run」をクリックすると、実際にはデータベースを書き換えずに結果をプレビューで確認する事ができます。その後、問題なければ「live run」をクリックして、実際に置換します。
自分の場合はドメイン名が変わっただけなのでこのツールで文字列置換をするだけであっさりうまくいきました。ディレクトリ名が変更になる場合は、.htaccess内の記述も変更する必要があると思います。
最後は悪用されないよう、このフォルダごと削除しておくのを忘れないようにしましょう!
[AD_server]