web関連

wordpressの引っ越しやssl化の時のURL置換について

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を勝手に書き換えていたよう…シリアライズ全く関係なかった…

そもそも1度sqlファイル落としてテキストエディタで置換かけているから「シリアライズ」って影響すんのかな?データベース上で置換かけたら起きるのはわかるが…

「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/

同じく使い方を載せています。この記事を見て一括置換の方法が違う事を知った。
データベース周りはど素人なので、URLの置換だけでも胃が痛くなる… 今回マルチサイトで結構な失敗をしたのと過去のvpsの案件で軽くトラウマ抱えてます。