かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

WordPress カテゴリー・タクソノミー 一覧ページで現在のカテゴリー・タクソノミー名を取得したい

category.php, taxonomy-{tax_slug}.php の所謂、カテゴリー・タクソノミの一覧ページで選択されているカテゴリー名・タクソノミー名を取得したい

🙅 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

このメソッドを探すのが一番難しかった…

おわり


[参考]