サポート » 使い方全般 » 記事に表示するカテゴリ名の親カテゴリ指定

  • 解決済 hforum

    (@hforum)


    解決方法が分からず悩んでおります。

    ・カテゴリ構造
    親カテゴリ「A」(ID=1)と「B」(ID=2)
    「A」に属している子カテゴリ「A1」、「A2」
    「B」に属している子カテゴリ「B1」、「B2」

    「A1」と「B1」に登録している記事があります。
    その記事の表示で、A1だけ表示させたいのです。(「A」に属しているカテゴリの名前だけ表示)
    single.phpの中に

    <?php if (have_posts()): while (have_posts()) : the_post(); ?>
    <?php $categories = get_the_category();
    foreach($categories as $category) {
    echo $category->cat_name . ' ';}
     ?>
    <?php endwhile; endif; ?>

    と表記させると、カテゴリが2つとも表示されます。
    そこで、

    <?php if (have_posts()): while (have_posts()) : the_post(); ?>
    <?php $categories = get_categories('child_of=1');
    foreach($categories as $category) ?>
    <?php echo $category->cat_name . ''; ?>
    <?php endwhile; endif; ?>

    という記述にすると、親カテゴリが「A」のカテゴリ名だけ表示されるのですが、
    「A2」に属した記事が最新の記事の場合、
    A1に属した記事にも「A2」と表示されてしまいます。

    カテゴリは今後も増えていくので、カテゴリ指定はなるべく避けたいです。
    複数カテゴリに登録した記事に表示させるカテゴリ名の、親カテゴリを指定することは可能でしょうか?

    宜しくお願いいたします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • kz

    (@kz)

    未検証なので細かいところはよきにはからってください。

    <?php
      if(have_posts()) :
        while(have_posts()) :
          the_post();
          $categories = get_the_category();
          foreach($categories as $category) :
            if(cat_is_ancestor_of(1, $category))
              echo $category->cat_name . ' ';
          endforeach;
        endwhile;
      endif;
    ?>

    トピック投稿者 hforum

    (@hforum)

    kz 様
    ありがとうございます!
    cat_is_ancestor_ofという関数があったのですね。
    大変勉強になりました。

    おかげ様で希望通りの動きとなりました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「記事に表示するカテゴリ名の親カテゴリ指定」には新たに返信することはできません。