どうもこんにちは。
Web/App/UIデザイナーのサトウです。
今回は、WordPressでDB内の文字列を置換できるプラグイン「Better Search Replace」について書いていきます。
Xserverの動作確認URL利用でURLの置換が必要に
先日ある案件でXserverの動作確認URLを利用する機会がありました。
WordPressでWebサイトを制作し、ドメインのネームサーバを設定したあと、それが反映されるまでの確認環境として利用しました。
Xserverの動作確認URL
「Xserverの動作確認URL」というのは、ドメインのネームサーバ設定が反映されるまでの間、Webサイトにアクセスできるよう暫定的に
「http://ドメイン名.check-xserver.jp/」という動作確認用のURLを発行してくれるサービスです。
そこまではいいのですが、そのあと、いざネームサーバの設定が反映され、ドメインでWebサイトにアクセスできるようになると、面倒なことになりました。
WordPressのサイトURL設定が動作確認URLになってしまっていたのです。
WordPressが出力するパーマリンクのURLや管理画面のURLなど、すべてのURLが動作確認URLになってしまっています。
もちろん、メディアのURLもすべて動作確認URLになっています。

WordPressサイトで動作確認URLを使用する際は注意
Xserverの動作確認URLは、サイトを複製したり、アクセスをリダイレクトしたりという性質のものではなく、一旦暫定的にではあるものの実際に動作確認URLを割り当ててしまうもののようで、WordPressの設定画面で設定する「WordPress アドレス (URL)」「サイトアドレス (URL)」に動作確認URLが設定されてしまいます。
そのため、ドメイン名を直接入力してWebサイトにアクセスはできるものの、そのあと他のページに遷移した際のURLが動作確認URLになってしまいます。
また、画像を右クリックして新しいタブで開くと、しっかりと動作確認URLがブラウザのアドレスバーに表示されます。
そこで、DB内のありとあらゆる「http://ドメイン名.check-xserver.jp」という文字列を「http://ドメイン名」に書き換えなければなりません。
投稿や固定ページ内に記述された動作確認URLは置換が必要
WordPressで固定ページや投稿にメディアを配置すると、https://(またはhttp://)から始まるフルパスでimgタグが記述されます。
設定画面から「WordPress アドレス (URL)」や「サイトアドレス (URL)」を変更しても、これらの記述は変更されないため、DB内の文字列を置換する必要があります。
DB内の文字列置換プラグイン「Better Search Replace」を試す
WordPressでDB内の文字列置換プラグインといえば「Search Regex」を利用してきた人は多いのではないでしょうか。
僕もその1人なのですが、その「Search Regex」、最終更新が1年前となっていて、最新のWordPressでは動作が未検証になっています。
これはよろしくない。
というわけで、「Search Regex」以外のDB内文字列置換プラグインを使ってみることにしました。
WordPressのプラグイン追加画面で「database replace」と検索してみると、いくつかのプラグインがヒットします。
その中から「Better Search Replace」を使ってみることにしました。
理由は以下のとおりです。
- 検索結果の一番目に表示された
- 最終更新が2ヶ月前と比較的新しかった
- 有効インストール数が100万以上と利用者が多かった
- 評価が455件付いていて★4.5と高評価だった

「Better Search Replace」の実行
では早速「Better Search Replace」でDB内にある動作確認URLの文字列を正式なURLに置換していきましょう。
「Better Search Replace」は管理メニューの「ツール」に入っています。

使い方は簡単
「Better Search Replace」の使い方は簡単です。
- 検索する文字列
- 検索した文字列を置き換える文字列
- 検索対象のDBテーブル
を指定して実行するだけです。

実行するとプログレスバーが伸びていき、

すぐに完了しました。

どのテーブルで何個置換したかを確認できます。

いくつかのオプションは適宜どうぞ
オプションとして
- 大文字と小文字を区別するかどうか
- GUIDを書き換えるか
- dry run(リハーサル)を実行するかどうか
を選べますので、適宜選択してください。
大文字と小文字を区別するかどうか
適宜判断してください。
GUIDを書き換えるか
このチェックは外したままで大丈夫です。
GUIDというのは、Globally Unique IDentifier の略だそうで、
世界中で重複することがなく、ユニーク(唯一)であることが保証された128bitのランダムな数値。オブジェクト指向システムにおいて、オブジェクトを識別するためなどに利用される。
Insider’s Computer Dictionary:GUID とは? – @IT
とのこと。
この文字列には別にURLが入っていなくてもいいんですが、WordPressではURLを含めることにしているんだそうです。
これを書き換えないことによるデメリットは特になく、逆に書き換えることで何かしらの不具合が発生する恐れがあるそうなので、そっとしておきましょう。
dry run(リハーサル)を実行するかどうか
適宜判断してください。
実行すると、検索対象の文字列がどのテーブルに何個あったかを教えてくれます。


正規表現を用いた検索と置換は有料版で使用可
無料版では、正規表現を用いた検索と置換は利用できません。
ちょっと手の込んだ置換を実行したい場合は、有料版を購入するか、別のプラグインを検討することになります。
有料版は4つのプランがあり、メディアファイルを移行する機能のあるプランや、テーマファイルやプラグインも移行する機能のあるプランもあります。
Webサイトの複製やサーバー移行の際に役立ちそうです。
シンプルで使いやすい「Better Search Replace」
DB内の文字列置換プラグインをいくつか試してから決めるつもりでしたが、1個目に試した「Better Search Replace」がシンプルで使いやすかったのでもうこれでいいかなという感じです。
- 大文字と小文字を区別するかどうか
- GUIDを書き換えるか
というオプションもあり安全性も確保できていると思いますので、僕としては今後「Better Search Replace」を使っていく方向でいいかなと思いました。
もし他におすすめのプラグインがあれば Twitter などで教えていただけると嬉しいです。
さて、今回は、WordPressでDB内の文字列を置換できるプラグイン「Better Search Replace」について書いてみました。
いかがだったでしょうか?
読んでくださったあなたの参考に少しでもなれば嬉しいです。
それではまた次回。