Amazon11/12まで!スマイルSale開催中! セール会場へ

Search Regex│正規表現を使った文字置換方法

Search Regexで、テーマ変更後に残ったショートコードをURLへ置換する例です。

対象は投稿本文に保存された単純なテキスト形式に限定します。

ブロックのJSON属性や入れ子のHTMLを一括変換する式ではありません。

目次

著者

WEB制作をしているデジタルノマド
WordPressのカスタマイズが好きで、色々と自作しています。

WordPressのカスタマイズに困ったらご相談ください!

置換前に対象とバックアップを決める

データベースをバックアップし、復元できる検証環境で試します。

「ツール → Search Regex」で検索元を投稿にし、本文だけを対象に指定します。

最初は投稿IDなどで1件に絞り、検索のみで一致範囲を確認してください。

タイトル・抜粋・オプション・メタ情報は今回の対象に含めません。

スポンサーリンク

sankoショートコードをURLに置換する

次のようにhrefが先頭の属性で、属性値が半角の二重引用符で囲まれた形式を対象にします。

全角・曲がった引用符、単一引用符、属性順の違い、角括弧を含む属性値には一致させません。

対象外は個別に確認します。

[sanko href="https://example.com/article/" title="記事タイトル" site="サイト名"]

検索欄で正規表現を有効にし、次の式を貼り付けます。

式の前後に / は付けません。

\[sanko\s+href="(https?://[^"\s\[\]]+)"(?:\s+[a-zA-Z_-]+="[^"\[\]]*")*\s*\]

置換欄は次の値です。

URLを取得する括弧が1組なので、$1でその内容を使います。

$1

貪欲な (.*) を使わず、属性の引用符とショートコードの終端を越えない形にしています。

同じ行に2個ある場合も別々に置換します。

ただしコード例として掲載した文字列も一致するため、記事の文脈まで確認してください。

検索結果を確認してから適用する

検索操作だけではデータベースは変わりません。

プレビューでショートコード全体だけが選ばれ、前後の文章が残ることを確認します。

結果の個別変更では「一致箇所のみに適用」を使い、行全体をURLに置き換えないでください。

1件を変更して公開画面と編集画面を確認してから、同じ条件の対象に広げます。

置換後はURL文字列になります。

ブログカードになるかはテーマ、ブロックの種類、URLの配置によります。

SWELLでもすべての保存形式で自動カード化するとは限りません。

カードにならなければ編集画面で対応するブログカードへ設定し直してください。

吹き出しの中身だけ残す場合

属性なし・入れ子なしの mysay に限る式です。

改行を含む本文を取得し、入れ子では内側だけが一致する場合があるため、入れ子のある本文はこの置換の対象外にします。

置換値は $1 です。

\[mysay\]((?:(?!\[/?mysay\])[\s\S])*)\[/mysay\]

ブロックの変換は別に扱う

見出しブロックがないことだけで、クラシックエディタの記事とは判定できません。

またJINのボックスをSWELLへ移す際、正規表現でdivをたどると入れ子部分を欠損させるおそれがあります。

このページの式でブロックHTMLを変換しないでください。

検証用記事で移行先ブロックを作成し、見出し・本文・リンク・画像を移して編集画面のブロック検証を通す方法を使います。

検証と戻し方

例のPCRE式は、単独・同一行の複数・改行・対象外の引用符・前後の文章を含むテストで確認しています。

利用環境のSearch Regex画面での一括更新や、テーマ移行後の全記事表示まで保証するものではありません。

公開画面ではPCとスマホ、リンク先、ブロックのエラーを確認します。

誤置換したら追加の置換を止め、対象本文を保存済みの変更前データから戻します。

データベース全体を戻す場合は、バックアップ後の注文・コメント・編集内容も巻き戻る点を確認して実施してください。

公式資料:結果と一致箇所の置換、検索と一括置換の違い。

スポンサーリンク

よくある質問:Search Regexで正規表現を使って文字置換するとき

この記事は、何を置換する方法を扱っていますか?

記事では、Search Regexで、テーマ変更後に残ったショートコードをURLへ置換する例です。

対象は投稿本文に保存された単純なテキスト形式に限定します。

ブロックのJSON属性や入れ子のHTMLを一括変換する式ではありません。

置換する前に、何をしますか?

記事では、データベースをバックアップし、復元できる検証環境で試します。

「ツール → Search Regex」で検索元を投稿にし、本文だけを対象に指定します。

最初は投稿IDなどで1件に絞り、検索のみで一致範囲を確認します。

タイトル・抜粋・オプション・メタ情報は、今回の対象に含めません。

どんな形式のショートコードが対象ですか?

記事では、hrefが先頭の属性で、属性値が半角の二重引用符で囲まれた形式を対象にします。

全角・曲がった引用符、単一引用符、属性順の違い、角括弧を含む属性値には一致させません。

対象外は個別に確認します。

検索欄や置換欄は、どう入力しますか?

記事では、検索欄で正規表現を有効にして式を貼り付けます。

式の前後に「/」は付けません。

置換欄は、URLを取得する括弧が1組なので、$1でその内容を使います。

「検索」を押すと、データベースが変わりますか?

変わりません。

記事では、検索操作だけではデータベースは変わりません。

プレビューでショートコード全体だけが選ばれ、前後の文章が残ることを確認します。

結果の個別変更では「一致箇所のみに適用」を使い、行全体をURLに置き換えません。

置換したあと、ブログカードになりますか?

なるとは限りません。

記事では、置換後はURL文字列になります。

ブログカードになるかは、テーマ、ブロックの種類、URLの配置によります。

SWELLでもすべての保存形式で自動カード化するとは限らず、カードにならなければ編集画面で対応するブログカードへ設定し直します。

ブロックのHTMLも、正規表現で変換してよいですか?

変換しないでください。

記事では、JINのボックスをSWELLへ移す際、正規表現でdivをたどると入れ子部分を欠損させるおそれがあります。

検証用記事で移行先ブロックを作成し、見出し・本文・リンク・画像を移して、編集画面のブロック検証を通す方法を使います。

置換を間違えたときは、どうしますか?

記事では、誤置換したら追加の置換を止め、対象本文を保存済みの変更前データから戻します。

データベース全体を戻す場合は、バックアップ後の注文・コメント・編集内容も巻き戻る点を確認して実施します。

なお、記事の式は、利用環境のSearch Regex画面での一括更新や、テーマ移行後の全記事表示まで保証するものではありません。

  • URLをコピーしました!

プラグインの設定でお困りなら

プラグインの導入・カスタマイズ代行

プラグインの選定から設定、競合の解消、動作に合わせた追加実装まで承ります。1時間 ¥8,000〜(税込)。

WAZAの有料記事のサブスクリプションも開始しました。

サービス

Service

WordPressサイトのカスタマイズのサービスに関心がありましたら、ぜひ詳細をご覧ください。

目次