WordPressでカテゴリーページへのリンクを任意のページへのリンクに変換する方法を紹介します。
カテゴリーページの代わりに投稿ページを用意して、カテゴリーページの代わりに用意した投稿ページを表示したいときに使えます。
この方法を使うと以下のことができます。
- テンプレート内で生成されるカテゴリーページへのリンクを任意のページへのリンクに変換する
- カテゴリーページのURLに直接アクセスすると、任意のページのURLにリダイレクトする
user_trailingslashit
フィルターを使って、WordPressが生成するURLを任意のURLに書き換えます。
カテゴリーページのURLが「/category/hokkaido/
」のようになっており、カテゴリーページへのリンクを、URLが「/hokkaido/
」の投稿ページにリンクするように変換したい場合、functions.php
に以下のコードを記述します。
function remcat_function($link) { $link = str_replace('/category/', '/', $link); return $link; } add_filter('user_trailingslashit', 'remcat_function');
user_trailingslashit
フィルターはカテゴリーページ以外のURLも書き換えることができるので、置換パターンを変更することで、サイト構成に併せて柔軟なURL設計が可能です。
投稿ページを用意するのではなく、変換後のURLでカテゴリーページを表示したい場合は、functions.php
に以下のコードを記述します。これは、パーマリンク設定でカテゴリーページのURL構成を変更するのと同じ効果があります。
function remcat_function($link) { $link = str_replace('/category/', '/', $link); return $link; } add_filter('user_trailingslashit', 'remcat_function'); function remcat_flush_rules() { global $wp_rewrite; $wp_rewrite->flush_rules(); } add_action('init', 'remcat_flush_rules'); function remcat_rewrite($wp_rewrite) { $new_rules = array('(.+)/page/(.+)/?' => 'index.php?category_name='.$wp_rewrite->preg_index(1).'&paged='.$wp_rewrite->preg_index(2)); $wp_rewrite->rules = $new_rules + $wp_rewrite->rules; } add_filter('generate_rewrite_rules', 'remcat_rewrite');
参考
- 【Tips】WPのカテゴリーページでパーマリンクから”category”を取り除く4つの方法 | WordPressテーマ/DigiPress
- WordPressのカテゴリーページURLから「category」を削除する方法 | ダイナシイエスタデイ