WordPress の記事内容を一括で置換できるプラグイン Search Regex
SSL 化に伴い内部リンクを http から https へ変更したい。target="_blank" を全て削除したい。そんな時に全ての投稿を対象に検索して、HTML の一括置換が行える WordPress のプラグインを紹介します。
その名も Search Regex です。
このプラグインは、正規表現による置換処理が行える機能もあり、例えば h3 タグで記述した部分を全て h2 タグに置き換えることも出来るのです。
投稿を1つずつ開いて編集するのは手間な上、目視では修正漏れが生じる可能性もあります。確実に漏れなく変換をかけるためには、プラグインの力を借りるのが一番手っ取り早いです。
では実際に使い方を見ていきましょう。
Search Regex を利用する前に
バージョン2リリースされました
2020年5月9日に約5年半ぶりにバージョンアップが行われました。これまでのバージョン 1.4.16 からバージョン 2 になり、大幅な変更が加えられました。
この記事で紹介しているのは、旧バージョン 1.4.16 のものです。内容が古いため、現状は参考にならないのでお気をつけください。
バージョン 1.4.16 のエラーについて
このプラグインはしばらく更新が止まっています。そのため WordPress 5.4 以降で Search Regex 使うと、一部の処理でエラーが発生します。ただ処理中にクルクル回るローディングの画像が読み込めなくないだけで、置換処理自体には問題ありません。
画面上はエラーが起こったことに気付きませんが、PHP エラーの内容が記されたメールが届く仕組みになっています。そのまま無視しても問題はありませんが、もし自らソースコードを修正するのであれば、こちらの記事を参考にしてください。
Search Regex の項目説明
以下、Ver. 1.4.16 の画面となります。
プラグインを有効化にするとメニューの [ツール] → [Search Regex] が追加されるので、まずはそこからアクセスします。
Search Regex を開くと次のような画面へ遷移します。上から置換する処理対象、一括処理時の処理上限数、検索結果の並び順、検索パターン、置換時の変換パターン、そして最下部のチェックボックスは正規表現におけるオプション項目が配置されています。
なお入力欄の上にある説明文を訳すと、次のように記載されています。
置換処理は [Replace & Save] ボタンをクリックした時に行われ、データベースへ保存されます。[Search] [Replace]ボタンをクリックした場合は、置換処理候補のプレビューを閲覧できます。
置換処理によって損害を被っても責任は取れません。変更する前にバックアップを取っておくことを強くおすすめします。
間違った置換処理をしてしまうと元に戻すのが大変です。データベースのバックアップは必ず取るようにしましょう。
置換処理が行える対象
処理対象はプルダウンからの選択式となります。投稿内容、コメントの各項目単位で処理を行うことができます。以下の9項目より処理対象が選べます。初期値は「Post content」です。
- Comment author ……… コメント作成者
- Comment author email … コメント作成者メールアドレス
- Comment author URL … コメント作成者 URL
- Comment content …… コメント内容
- Post content ………… 投稿内容 (初期選択値)
- Post excerpt ………… 投稿抜粋
- Post meta value …… 投稿カスタムフィールド
- Post title …………… 投稿タイトル
- Post URL …………… 投稿パーマリンク
置換対象は WordPress のデータベースに格納されている情報に限ります。また投稿記事に関しては、固定ページも対象になります。
テーマやプラグインのデータは対象外です。これらはデータベースの情報ではなくファイルとして存在しているものなので、Search Regex で置換することはできません。
処理上限数を設定しておこう
検索条件によっては、処理対象数が膨大になります。場合によって処理対象が500件を超えることもあり、変換前のチェックが大変になります。
チェックせずにいきない変換することも可能ですが、対象ではないデータを間違って変換してしまうと戻すのが大変です。特に処理対象件数が多かった場合は、上限値を設定したほうが安心です。
No Limit(上限なし)、10、25、50、100 から選択できます。
検索結果の並び順は ID の順番
例えば投稿内容を置換しようと「Post content」を選択し検索したとします。Ascending(昇順)を選択していれば投稿記事が古い順で表示され、Descending(降順)を選択していれば新しい順に出力されます。
正規表現による検索ができる
Regex のいずれかのチェックボックスを ON にすると、正規表現を用いた検索および置換が行えます。にチェックボックスの項目は、それぞれ次のような意味があります。
- case-insensitive …… アルファベットの大文字・小文字を区別しない
- multi-line …………… マルチラインモード
- dot-all ……………… ドットオールモード
マルチラインモード(複数行モード)とは、正規表現時に用いるハット記号 (^) とドルマーク ($) が、行単位で先頭と末尾を判定するモードです。検索対象全体に対し(改行含め)、先頭と末尾を判定するのがシングルラインモードとなります。
またドットオール (DOTALL) モードは、ピリオド (.) で改行をマッチさせるためのモードです。
正規表現を知っていても、これらのモードを使いこなすのは難しいです。用法がよく分からない場合、むやみにチェックを入れないほうが賢明です。
Search Regex で置換処理を行う
それでは実際に置換処理を行っていきましょう。
例として次のように、アドレスから http を取り除く置換を行います。これは URL を SSL 化するための下準備として、よく変換されるパターンです。(https へ置換しない点がポイント。)
これで img タグの URL や、アンカータグ内の内部リンク URL が一括で置換されます。
Search ボタンにより検索対象を表示
検索条件を入力したらその対象が何件あるのか、[Search] ボタンをクリックして内容を確認しましょう。もし対象の件数が多いようであれば、処理上限数を設定すると良いです。
右肩にある view と edit はそれぞれリンクになっています。前者は該当のページを表示します。後者は該当ページの編集画面を開きます。
この時リンクは新しいタブで開かれないので、もし処理結果をそのまま残したければ、新たらしいタブで開くようにしてください。(右クリックから新規タブで開く、もしくはマウスのセンタークリック等で開く。)
Replace ボタンにより置換処理プレビューを表示
実際に置換処理を行うとどのようになるのか、[Replace] ボタンをクリックすることで事前にチェックできます。この段階では、まだデータベースへの反映は行われません。
確認して問題なければ、次の処理で置換内容を確定します。
Replace & Save ボタンにより置換処理を実行
[Replace & Save] ボタンをクリックすれば、置換結果がデータベースに反映されます。
更新されたデータベースの情報は元に戻せないので、事前確認は必ず行いましょう。
処理の実行結果は、更新件数のみ表示されます。(変換前のデータは無くなってしまうため、このような仕様になっていると思われます。)
また Search Regex が変換を行うのは、Source(処理対象)で指定した範囲のみです。
置換処理が行われても、各データの最終更新日は更新されません。
正規表現を使えばタグの一括置換が可能に
特定のタグで囲まれた内容を別のタグに置き換えたい場合、開始タグと終了タグがあるため、通常の置換では一括処理ができません。そんな時は正規表現を使って、開始タグと終了タグを一気に置換できます。次の例をご覧ください。
タグ <p class="b"></p> で囲ったデータを <h3></h3> で囲うように変換をかけたものです。正規表現を用いているので、下部の Regex へチェックを入れています。それぞれ条件として、次のように入力しています。
|<p class="b">(.*)</p>|
条件の前後に縦線 (|) を入力しておくのがポイントです。タグの中で囲まれた文字列は (.*) にて表現します。
<h3>$1</h3>
正規表現で表した (.*) の部分を置換パターンに入力する際は、$1 と記載して利用します。もし検索条件に正規表現で表したものが複数あった場合、置換パターンには左側から順番に $1, $2 $3 が対応する仕組みになっています。
置換パターンには (.*) のような正規表現をそのまま記さず、$1 に置き換えると覚えておいてください。
[Replace] ボタンを押下して置換処理候補のプレビューを確認した結果は次の通りです。開始タグと終了タグだけが置換対象となっていることがわかります。
確認して問題なければ [Replace & Save] ボタンで処理を確定します。
正規表現を利用した置換は初心者向きではありません。ある程度の知識を身に付けてから利用したほうが、大きなミスをするリスクが減ります。
以上、WordPress の記事内容を一括で置換できるプラグイン Search Regex の紹介でした。