post_link_category フィルターを使ってWordPressの記事URLから「子孫カテゴリー」を削除する方法を紹介します。
パーマリンク設定を「/%category%/%postname%/」といった、カテゴリーを含めた構造している場合のマニアック?なカスタマイズです。
通常、上記のようなパーマリンクを設定していると、子孫カテゴリーも記事のURLに含まれることになります。
今回はこの子孫カテゴリー部分を削除して、親カテゴリーだけを記事のURLに含めるカスタマイズです。
文章で書くとわかりにくいかもしれませんが、こんなイメージです。
(適用前) https://example.com/cat1/cat2/post1/
(適用後) https://example.com/cat1/post1/
下記のコードをfunctions.php
にコピペするだけでOK。
add_filter('post_link_category', function ($category) {
while ($category->parent) {
$category = get_term($category->parent, 'category');
}
return $category;
}, 10, 3);
ポイントはpost_link_category
フィルターです。これで「%category%」を簡単にいじれちゃいます。