【WordPress】Search Regexがきちんと動かないときの対処法

WordPressのプラグイン「Search Regex」は、正規表現を使って投稿やページ内の文字をまとめて変換できる便利なプラグインです。

ただこのプラグイン使っていると、変換処理が正しく行われず困った事が何度かありましたので、本ページではその対処法についてメモしておきたいと思います。

また、Search Regexで改行コードを変換する方法もちょっとしたコツが必要だったため、併せて記載しておきたいと思います。

なお、本記事執筆時点でのSearch Regexのバージョンは2.4.1です。

(症状1)変換処理の途中で止まる

Search Regexでは「検索」に変換対象となる文字列、「置換」に変換後の文字列を入力し、「すべて置換」ボタンを押すと変換処理が始まります。

変換が始まると「置換の進行状況」を表すプログレスバーが動き出し、これが100%になると処理が終了します。

しかし場合によっては、このバーが途中まで進んだ後に、そのまま進行が止まってしまうことがあります。

さらにしばらく待っていると、「何かがうまくいきません」というエラー画面に切り替わって変換処理が中断されてしまいます。

置換の進行状況が途中で止まり…

置換の進行状況が途中で止まり…

何かがうまくいきません

何かがうまくいきません

解決方法

このエラー画面には「次にどうしますか?」のメッセージの下に3つの対処方法が提示されています。

  1. キャッシュソフトウェアを使用している場合、すべてのキャッシュを削除する。
  2. 他のプラグインを無効にする。
  3. WordPressのサイトヘルスを確認し、問題があればそれらを解決する。

そこでこれら3つの対処方法を試してみたところ、これはあくまで自分のケースではありますが、結果としては他のプラグインが問題の原因であることが判明しました。

Search Regex以外のプラグインをいったん停止し、再び変換処理を行ってみると、今度はきちんと変換作業を完了することができました!

このように、Search Regexで変換処理が途中で止まってしまう場合には、上記3通りの方法をまずは試してみることをおすすめします!

(症状2)変換処理が正常に行われたように見えて、実際は変換されていない

Search Regexで起こる問題は(症状1)のケースが多いのですが、たまに一見すると正常に変換処理が行われたように見えて、実際には変換されていないという問題も起きることがあります。

(症状1)では「置換の進行状況」のプログレスバーが途中で止まり、その後エラーメッセージが表示されるので何か問題が起きたとすぐ分かるのですが、(症状2)では「置換の進行状況」のバーはしっかりと100%まで進行し、エラーメッセージが表示されることもありません。

100%で問題なく処理が完了したように見えるが…

100%で問題なく処理が完了したように見えるが…

ですが、「置換の進行状況」のプログレスバー下に小さく表示されている「置換情報」を確認してみると、「0 phrases, 0 rows.」となっており、実際に投稿やページの編集画面を確認すると、変換が行われていない事が分かります。

よく見ると件数がゼロに!

よく見ると件数がゼロに!

解決方法

この症状ではエラーメッセージが表示されないため、解決への手掛かりが何もありません。

そのため自分も色々な方法を試してみたのですが、結論を言うと、自分のケースでは「入力元」をデフォルトの「投稿」と「固定ページ」から「固定ページ」を削除し、「投稿」のみにした状態で「すべて置換」ボタンを押すと、変換処理がきちんと行われました!
(投稿ページ内の文字列を変換したい場合。)

「入力元」の「固定ページ」を削除

「入力元」の「固定ページ」を削除

もちろん全てのケースでこの方法が有効であるという保証はありませんが、ひとつの参考としていただければと思います。

Search Regexで改行コードを変換する方法

最後に、Search Regexで改行コードを変換する方法について解説したいと思います。

通常、改行コードは「\n」や「\r\n」と入力するのが一般的ですが、例えば「一行目の文字列\n二行目の文字列」のように、Search Regexでこれらの改行コードを含んだ文字列を検索しても何もヒットしません。

そこで少し調べてみたのですが、どうやらWordpressのエディタで入力した改行については、自動的に半角スペースが挿入される仕様となっているようです。

そのため、投稿や固定ページ内の改行コードをSearch Regexで変換するには、「一行目の文字列\s\n二行目の文字列」というように、改行コード部分を「\s\n」と入力する必要があります(\sが半角スペース)。

Search Regexで改行コードを検索

Search Regexで改行コードを検索

改行コードを検索するには正規表現を使う必要があるため、「検索フラグ」のドロップダウンリストで「正規表現」を事前に選択しておく必要があります。

「検索フラグ」で「正規表現」にチェックを入れる

「検索フラグ」で「正規表現」にチェックを入れる

なお、「置換」部分を「複数行」にして入力された改行には半角スペースが挿入されません

したがって、「複数行」を使って変換された文字列部分を再度変換したい場合、改行コードは「\s\n」ではなく「\n」と入力して検索してください。

コメント