category.php
, taxonomy-{tax_slug}.php
の所謂、カテゴリー・タクソノミの一覧ページで選択されているカテゴリー名・タクソノミー名を取得したい
- WordPress
v6.6.1
🙅 get_the_terms を使うをバグが発生しうる
<?php function get_tax_name($tax_slug = 'category') { global $post; $terms = get_the_terms($post, $tax_slug); return $termObj[0]->name ?? ''; }
上記のような get_the_terms
を使った方法では下記のようなバグが発生しうる
get_the_terms
は投稿に紐づくカテゴリー・タクソノミーの一覧を取得するので、アーカイブページの最初の $post
が複数のカテゴリーやタクソノミーを持っていた場合、選択されたものを別のカテゴリー名・タクソノミー名が取得される可能性がある。
また、投稿が 0 件だと $post
が存在しないのでカテゴリー名・タクソノミー名の取得そのものができない
🙆 single_cat_title を使う
single_cat_title('', false)
を使うとカテゴリーでもタクソノミーでも現在のカテゴリー名・タクソノミー名が取得できる!
<?php function get_tax_name() { return single_cat_title('', false); }
taxonomy 名なども不要なので簡単!
どうやら内部的には single_term_title
が呼ばれれいるので taxonomy でも問題なく取得できてるっぽい
<?php function single_cat_title( $prefix = '', $display = true ) { return single_term_title( $prefix, $display ); }
cf. single_cat_title() – Function | Developer.WordPress.org
このメソッドを探すのが一番難しかった…
おわり
[参考]