wordpressの引っ越しやssl化の時のURL置換について
wordpressのURLを変更する時に、いつもsqlファイルを落として一括置換をしていたのですが、wp_optionsやwp_postmetaには「シリアライズ」されたデータが入っているみたいで良くないという情報を聞き「Search Replace DB」を使ったときのメモ
そもそもシリアライズって何?
データベースにURLを保存する際に利用しやすい形に変換をすることを「シリアライズ」と呼ぶようです。
「シリアライズ」すると、文字列の長さを保存するようで「https://sample.com」だったら「18」文字の情報をデータベース上で持ち、URLだけ置換かけても文字列の長さが異なる為動作が上手くいかないことがあるようです。
// こんな感じに長さとURLみたいにシリアライズされる
s:18:"https://sample.com";
シリアライズを調べるに至った経緯
マルチサイトをデモ環境から本番環境にsqlファイルを落として一括置換して公開した後、マルチサイトの子サイトにログインをすると親サイトの管理画面に飛ばされるという現象が起きました。
データベースを見ると、子サイトの管理画面のURLが親サイトの管理画面のURLに勝手に変更される現象が何度も起き原因を探していたら「シリアライズ」という言葉が出てきて、データベースはURLの文字列の長さを保存しており、それが原因で勝手に書き換わるのでは?と調査。
結果的には、「wp-config.php」に以下のコードを書いていたことが原因っぽかった。
define( 'relocate', true );
wordpressにログインができなくなって入れた記述なのだが、この記述が悪さをして子サイトの管理画面のURLを勝手に書き換えていたよう…シリアライズ全く関係なかった…
「Search Replace DB」の使い方
前段が長くなって申し訳ないが、外部サイトに丸投げします。
書こうと思ったのだが、外部サイトので十分かなと。
以下が参考になりました↓
▼WordPressサイトのドメイン一括置換には「Search Replace DB」が良い!
https://junjun-web.net/tool/search-replace-db-master/
▼WordPress移行時にURLをSQLで直接一括置換はダメ! 「Search and Replace for WordPress Databases Script」を使おう
https://www.infoscoop.org/blogjp/2014/08/14/use-search-and-replace-for-wordpress-when-moving/