category.php
, taxonomy-{tax_slug}.php
の所謂、カテゴリー・タクソノミの一覧ページで選択されているカテゴリー名・タクソノミー名を取得したい
- WordPress
v6.6.1
🙅 get_the_terms を使うをバグが発生しうる
<?phpfunction 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)
を使うとカテゴリーでもタクソノミーでも現在のカテゴリー名・タクソノミー名が取得できる!
<?phpfunction get_tax_name(){return single_cat_title('', false); }
taxonomy 名なども不要なので簡単!
どうやら内部的には single_term_title
が呼ばれれいるので taxonomy でも問題なく取得できてるっぽい
<?phpfunction single_cat_title($prefix='', $display=true){return single_term_title($prefix, $display); }
cf. single_cat_title() – Function | Developer.WordPress.org
このメソッドを探すのが一番難しかった…
おわり
[参考]