Search Regexで、テーマ変更後に残ったショートコードをURLへ置換する例です。対象は投稿本文に保存された単純なテキスト形式に限定します。ブロックのJSON属性や入れ子のHTMLを一括変換する式ではありません。
置換前に対象とバックアップを決める
データベースをバックアップし、復元できる検証環境で試します。「ツール → 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画面での一括更新や、テーマ移行後の全記事表示まで保証するものではありません。



