MENU

WordPress移行時のURL置換に便利なwp search-replace

WordPress移行時に発生する作業の一つとして、データベースのURLの置換があります。テキストエディタの機能で検索置換を行う方もいると思いますが、この方法だとシリアライズデータがあった場合は不十分です。

そこで今日は、WP-CLIのsearch-replaceコマンドを用いて置換を行う方法をご紹介します。

検索置換だけではダメかも?

WordPressを開発環境から本番環境などに移行する際に、データベース内のURLの置換が必要になります。
しかし、単純にsqlファイル内を検索置換するだけだと上手くいかない場合があります。それは「データベース内のURLがシリアライズされている可能性がある」からです。

シリアライズとは

シリアライズとは、複数の並列データを直列化して送信することである。

具体的には、メモリ上に存在する情報を、ファイルとして保存したり、ネットワークで送受信したりできるように変換することである。他方、既にファイルとして存在しているデータや、一旦シリアライズされたデータがネットワークから送られてきた際に、プログラムで扱えるようにする作業をデシリアライズと呼ぶ。

シリアライズとは – IT用語辞典 Weblio辞書

ここではシリアライズについて深く知る必要はありませんが、興味がある方は調べてみてください。WordPressでは下記のような形で記述されています。

s:の後の数字はURLの文字数(バイト数)を表しています。これがシリアライズされたデータです。つまり、単純にURLに置換をしただけだと、バイト数と文字数がズレてしまいます。s:の後の数字と文字数が一致しないと、テーマやプラグインが上手く動かなくなる場合があります。

置換作業はwp search-replaceで

そこでWP-CLIのseach-replaceを使用します。

WP-CLIとは

WP-CLIとは、WordPressを管理するためのコマンドラインツールで、search-replaceはその中の機能の一つです。
WP-CLIは非常に多機能で色々なことがコマンドラインから行えるので、黒い画面に抵抗がない方は一度試してみることをおすすめします。

基本的な使い方

下記のように置換前と置換後のURLを記述することで置換が行えます。

上記のように入力してEnterを押すと、下記のように置換結果がずらーっと表示されます。

そして肝心のシリアライズデータも正常に置換されます。対象のテーブルを指定出来たり、オプションも豊富です。

さいごに

最近は可能な限りvagrant + vccwで開発環境を構築し、デプロイの際はwordmoveを使用していたのでこのような作業は減りました。
しかし、クライアントのサーバー環境や社内事情によってはwordmoveが使用出来ないこともあるので、手動でアップロードする際は重宝します。

また、WP-CLIも非常に便利なツールなのでこの機会に触れてみてはいかがでしょうか。