1. HOME
  2. WordPress
  3. WordPressでカスタムタクソノミーのURLからタクソノミースラッグを削除する方法
WordPress - 2025-08-20

WordPressでカスタムタクソノミーのURLからタクソノミースラッグを削除する方法

WordPressでカスタムタクソノミー(カスタム投稿タイプのカテゴリー)を使用すると、デフォルトではURLにタクソノミー名が含まれます。
このままでも問題はありませんが、シンプルで短く、SEOにも有利なURL構造にしたい場合もあります。

例: https://example.com/news_category/sample/
目標のURL: https://example.com/news/sample/

WordPressのパーマリンクは通常、管理画面から設定しますが、カスタムタクソノミーのURL構造を柔軟にカスタマイズするには、少しのコードを追加する必要があります。

今回は、カスタム投稿タイプ「news」と、それに紐づくカスタムタクソノミー「news_category」を想定して、URLからタクソノミー名「news_category」を削除し、https://example.com/news/から始まるURLに変更するコードとその仕組みを解説します。

コードの全体像

以下のコードを、テーマの functions.php ファイルに追記してください。

function my_custom_post_type_permalinks_set($termlink, $term, $taxonomy){
  return str_replace('/'.$taxonomy.'/', '/', $termlink);
}
add_filter('term_link', 'my_custom_post_type_permalinks_set',11,3);

add_rewrite_rule('news/([^/]+)/?$', 'index.php?news_category=$matches[1]', 'top');
add_rewrite_rule('news/([^/]+)/page/([0-9]+)/?$', 'index.php?news_category=$matches[1]&paged=$matches[2]', 'top');

コードの解説

このコードは、主に以下の2つの役割を果たしています。

  • パーマリンクの見た目を変更する
  • 新しいURLでアクセスできるようにする

役割1:パーマリンクの見た目を変更する

function my_custom_post_type_permalinks_set($termlink, $term, $taxonomy){
  return str_replace('/'.$taxonomy.'/', '/', $termlink);
}
add_filter('term_link', 'my_custom_post_type_permalinks_set',11,3);

add_filter('term_link', ...) は、WordPressがターム(カテゴリー)へのリンクを生成する際に実行されるフックです。このフックを使って、my_custom_post_type_permalinks_set という関数を実行します。

この関数は、str_replace() を使用して、元のURLに含まれるタクソノミー名(例: /news_category/)を、ただのスラッシュ / に置き換えています。これにより、リンクが生成される時点でURLの見た目がhttps://example.com/news/event/ のように変更されます。

役割2:新しいURLでアクセスできるようにする

add_rewrite_rule('news/([^/]+)/?$', 'index.php?news_category=$matches[1]', 'top');
add_rewrite_rule('news/([^/]+)/page/([0-9]+)/?$', 'index.php?news_category=$matches[1]&paged=$matches[2]', 'top');

先ほどのフィルターでURLの見た目は変わりましたが、そのままではその新しいURLにアクセスしても「404エラー」になってしまいます。これは、WordPressがhttps://example.com/news/event/というURLをどう処理すればいいか分からないためです。

そこで add_rewrite_rule() を使って、URLの書き換えルールを追加します。

  • 'news/([^/]+)/?$': https://example.com/news/event/ のようなURLパターンにマッチする正規表現です。
  • 'index.php?news_category=$matches[1]': マッチしたURLを、WordPressが理解できるクエリパラメータ(?news_category=event)に変換しています。これにより、WordPressは「news_categoryというタクソノミーのeventタームの記事一覧ページを表示すればいいんだな」と認識できます。

2つ目のルールは、ページネーション(page/2など)に対応するためのものです。

適用後の最終ステップ

コードを functions.php に追加したら、必ずパーマリンク設定を更新してください。

管理画面の 「設定」→「パーマリンク設定」 を開き、「変更を保存」ボタンをクリックするだけでOKです。これにより、新しいURLの書き換えルールがWordPressに反映されます。

まとめ

WordPressのURL構造を柔軟にカスタマイズすることで、サイトの見た目だけでなく、ユーザーフレンドリーなサイト構築にもつながります。ぜひ試してみてください。