WordPressサイトをドメインごと引っ越す際の注意

先日お客様から「サイト名は変えるけどサイトの内容はそのままで、example.comからexample2.comに引っ越したい」という要望があり、じゃあ引っ越し作業するかとなりました。

とりあえずexample.comのWPにupdraftという引っ越しプラグインを使ってデータを引っ越すことに。データベース内のドメインを変更して、そのままexample2.comのWPにログインをして、updraftをいれてそっちで復元しました。

特に問題ないはずですが、チェックを続けていると・・・何故かお問い合わせフォーム(ContactForm7)がおかしい。

管理画面からフォームの編集画面を見てみると、フォームは存在しているけど管理者用と返信用メールの設定箇所が全て真っ白でした。なんだこれ・・・と思ってchatgptさんに聞いてみたところ、

原因

シリアライズが破損していたせいでした。以下AIより。

WordPressのデータベース内には、PHPの「シリアライズ形式(serialize)」で保存されているデータが多数あります。
この中には、配列やオブジェクトの情報と一緒に、**文字列の「バイト数」**が含まれているため、**単純なテキスト置換(ドメインの変更)**をすると バイト数と実際の文字列が合わなくなって壊れます

たとえば:

a:1:{s:4:"site";s:11:"example.com";}

この「s:11」は「11文字」という意味です。これを example2.com に単純置換すると:

a:1:{s:4:"site";s:11:"example2.com";} ←長さが合わない(実際は12文字)

この結果、WordPressが読み取れず、設定が消えたりエラーになります。

解決するには

引っ越し前のドメイン(今回で言うとexample.com)のワードプレスからWP Migrateというプラグインを使ってドメインの変換をして、sqlを出してそれをphpmyadminからインポートすれば解決しました。

Updraftは普段はバックアップ目的で使ってます。お勧めです。