.* WordPressのパーマリンク変更後、Search Regexで内部リンクを一括修正した

WordPressサイトのパーマリンク構造を変更すると、記事内の内部リンクが古い形式のまま残ってしまいます。今回は、この問題をSearch Regexプラグインと正規表現を使って解決する方法を紹介します。

パーマリンク変更で生じる問題

URLを短くシンプルにするために、パーマリンクを以下のように変更しました。

  • 変更前:https://note.chiilabo.jp/2025/10/07/sample-post/
  • 変更後:https://note.chiilabo.jp/2025-10/sample-post/

日付まで含むパーマリンクは「この記事は○月○日に書かれた」という印象を強く与えます。一方、年月だけの構造は「この記事は○月の記事」という緩やかな時間表現になります。日付の部分が1階層減るため、視覚的にもすっきりします。

WordPressでパーマリンク設定を変更しても、記事本文中に書かれている内部リンクは自動では更新されません1。リンク切れは起こりませんが、URL構造が統一されていない状態になります。

この場合、新しい記事のURLは自動的に新形式になりますが、過去の記事内で他の記事へリンクしている部分は古い形式のままなのです。

正規表現でまとめて置き換える

今回の変更では、年月日の部分を年月だけに変更する必要があります。

正規表現は、文字列のパターンを表現するための記法です。
検索パターンと置換パターンは次のようになります。

https://note\.chiilabo\.jp/(\d{4})/(\d{2})/\d{2}/
Code language: JavaScript (javascript)
https://note.chiilabo.jp/$1-$2/
Code language: JavaScript (javascript)

このパターンを分解して説明します。

  • \d{4}は4桁の数字を意味し、年を表します2
    \d{2}は2桁の数字で、月を表します。
    括弧で囲んだ部分は「キャプチャグループ」と呼ばれ、後で再利用できます。
  • 最後の\d{2}も2桁の数字ですが、これは日付を表します。
    括弧で囲んでいないため、この部分は置換後には使いません。つまり削除されます。
  • ドメイン部分の.の前にバックスラッシュがあるのは、正規表現では.が特別な意味を持つためです。
    実際のドット文字として認識させるには\.と書きます3
  • $1$2は、検索パターンで括弧に囲んだ部分を参照しています4
    $1が年、$2が月です。この2つをハイフンでつなぎ、新しいURL形式を作ります。

たとえば、2025/10/07というパターンが見つかると、2025-10に置き換わります。すべての年月の組み合わせに対応できるため、過去の記事も含めて一括処理できます。

ただプラグインで一括変更する前に、まず現状をバックアップしておきました。

私はサーバ管理画面から、Softaculousのバックアップ機能を利用しました。

Search Regexプラグインと正規表現フラグ

Search Regexは、WordPress内のテキストを検索・置換できるプラグインです5

Search Regex – WordPress plugin | WordPress.org

記事本文だけでなく、カスタムフィールドやコメントなど、データベース内のさまざまな場所を対象にできます。このプラグインをインストールして、「ツール」から「Search Regex」を開くと、検索と置換のフィールドが表示されます。ここで正規表現を使うと、柔軟なパターンマッチングが可能になります。

まず、検索欄に入力して、ヒットするか確認します。

ただし、Search Regexの検索・置換はデフォルトでは、大文字・小文字を区別しないだけです。
フラグに「正規表現」を選択しておかないと、うまくヒットしません。

次は、置換パターンを入力します。
置換を実行する前に、必ず「検索」ボタンで結果をプレビューします6

どの文字列がどう変更されるか、一覧で確認できます。意図しない置換が含まれていないか、変更対象が正しいかをチェックします。問題がなければ「すべて置換」ボタンで置換を実行します。大量のデータを扱う場合は慎重に進めるべきです。

まとめ

パーマリンク構造の変更後、Search Regexと正規表現を組み合わせると、内部リンクを効率的に更新できます。検索パターンで年月日の構造を捉え、置換パターンで年月のみの形式に変換します。実行前のプレビュー確認を忘れずに行えば、安全に一括処理が完了します。


  1. WordPressのパーマリンク設定変更時、新しい記事のURLは自動的に新形式になりますが、既存の記事内に記述された内部リンクやカスタムフィールド内のURLは手動での修正が必要です。 – WordPressパーマリンク URL変更方法とおすすめ設定
  2. 正規表現において\dは数字[0-9]を表すメタ文字です。{n}は直前の要素がn回繰り返されることを意味し、括弧()で囲んだ部分はキャプチャグループとして後方参照で利用できます。 – 正規表現 | バックスラッシュ()+文字を使った文字クラスの略記法正規表現の基礎まとめ
  3. 正規表現において.(ドット)は「任意の1文字」を意味するメタ文字です。ドット文字そのものとして扱う場合は\.のようにバックスラッシュでエスケープする必要があります。 – 正規表現:エスケープが必要な文字一覧正規表現 – JavaScript | MDN
  4. 正規表現の置換パターンにおいて、$1$2などは検索パターンのキャプチャグループに一致した文字列を参照します。\1\2という記法が使われる場合もあります。 – 正規表現の基礎まとめ
  5. Search Regexは投稿本文、固定ページ、カスタムフィールド、コメントなど、データベース内のさまざまな場所を対象に検索・置換が可能です。 – WordPressプラグイン | Search Regexプラグインの使い方
  6. Search Regexでは、置換実行前に検索機能でプレビュー表示を行い、意図した箇所が正しく置換されるかを確認できます。実際のデータは「Replace & Save」などの保存ボタンを押すまで変更されません。 – Search Regexとは?文字を一括置換できるWordPressのプラグインSearch Regexの使い方まとめ