WordPressでURLから「子孫カテゴリー」を削除する方法

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%」を簡単にいじれちゃいます。

よかったらシェアしてね!
目次