サポート » 使い方全般 » 「the_category()」で子カテゴリーのみ表示させる方法

  • 解決済 masayann

    (@masayann)


    すいませんPHPド素人ですが教えてください。

    カテゴリーページで、一覧で表示させた個別の記事に、
    紐付いているカテゴリー名を表示させています。

    ■階層やカテゴリーは以下です。
    親:講座
    子:訪問、レベル1

    ■やりたいこと
    親カテゴリーのカテゴリー名を表示させないようにしたい。
    子カテゴリーのみで良い。今回の場合「講座」がいらない。

    現在の記述は以下です。

    <?php $cat = get_the_category(); $cat = $cat[0]; {
    echo ‘<p class=”‘ . $cat->category_nicename . ‘” />’;
    } ?>
    <?php the_category(‘ ‘); ?></p>

    すいません、ご教授のほど、宜しくお願いいたします。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • 確認させてください、起きていることは「子カテゴリーだけを付けてある投稿について、the_category の呼び出し一回で親子両方のカテゴリーが表示される」ですね?

    ご返信ありがとうございます。

    >「子カテゴリーだけを付けてある投稿」

    厳密には下記3つカテゴリーに紐付けております。
    親:「講座」
    子:「訪問」「レベル1」

    >一回で親子両方のカテゴリーが表示される
    はい。『講座 訪問 レベル1』と3つ表示されますが、
    『訪問 レベル1』だけにしたいというのが目的です。

    その後調べていて下記記述で子カテゴリーのみ表示させることはできたのですが、
    リンクにならない、classが紐付けされないなど、他の点で問題が発生してしまい悪戦苦闘しております。

    <?php
    $cats = get_the_category();
    foreach($cats as $cat):
    if($cat->parent) echo $cat->cat_name;
    endforeach;
    ?>

    何卒、宜しくお願いいたします。

    その記事にカテゴリー「講座」を付けなければ済みますよね。何か「別の目的」があって親カテゴリーを付けているのだと思いますが、付けなくても別の方法(※)で「別の目的」が実現できればよいと思うので、それ(※)を考えてみてはどうですか。

    masayann さん

    リンクは、

    <?php
    $cats = get_the_category();
    foreach($cats as $cat):
    if($cat->parent) echo '<a href="'.home_url().'/category/'.$cat->slug.'">'.$cat->cat_name.'</a>';
    endforeach;
    ?>

    としてみてはどうですか?

    class はどういうものを付けたいのか、わからないので、ちょっと答えにくいです。
    カテゴリーごとに変えたいとかですか?

    ありがとうございます。

    でもそのまま貼り付けたら真っ白になりました。

    >class はどういうものを付けたいのか、わからないので、ちょっと答えにくいです。
    >カテゴリーごとに変えたいとかですか?

    はい。訪問(スラッグ:access)の場合は「class=”access”」
    閲覧(スラッグ:see)「class=”see”」のような感じです。

    下記記述でそれはできたのですが、親カテゴリーの「講座」も一緒に
    表示されてしまいます。

    <?php $cat = get_the_category(); $cat = $cat[0]; {
    echo ‘<p class=”‘ . $cat->category_nicename . ‘” />’;
    } ?>
    <?php the_category(‘ ‘); ?></p>

    すいません、最初コードの投稿の仕方が間違ってたので書き直しました。

    こんな感じでどうでしょうか?

    <?php
    $cats = get_the_category();
    foreach($cats as $cat):
    if($cat->parent) echo '<p class="'.$cat->category_nicename.'"><a href="'.home_url().'/category/'.$cat->slug.'">'.$cat->cat_name.'</a></p>;';
    endforeach;
    ?>

    すいません。何度もありがとうございます。
    最後に書いて頂いたコードで全てが解決致しました。

    カテゴリーがリンクになり、親カテゴリーも排除され、且つ、それぞれの子カテゴリーに
    スラッグのclassが付与されました。

    思い切って投稿して良かったです。大変助かりました。
    ありがとうございました。

    もう少しphp勉強します。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • トピック「「the_category()」で子カテゴリーのみ表示させる方法」には新たに返信することはできません。