サポート » 使い方全般 » カテゴリ名出力の際、エントリーがあるカテゴリと無いカテゴリで条件分岐する方法

  • 解決済 conte9999

    (@conte9999)


    いつもお世話になっております。

    設定しているカテゴリ名をサイドバーに一覧表示したいのですが、

    出力する際、

    ・エントリーが存在するカテゴリはリンク付きで
    ・まだエントリーが空のカテゴリはリンクなしのテキストで

    表示できるようにしたいと思っています。

    エントリーが空の場合に非表示にする方法は

    ‘hide_empty’ => 1

    とパラメータを変更すればできるのですが、

    すべてのカテゴリを表示した上で
    エントリーが空のカテゴリ名はリンクを付けない
    というやり方がわかりません。

    現在作成しているコードは以下のとおりです。

    <ul class="">
    <?php
    $categories = get_terms( 'tokyo', array(
        'orderby'    => 'count',
        'hide_empty' => 0
        )
    );
    foreach($categories as $value):
    ?>
    
    <li><a href="<?php echo get_category_link($value->term_id); ?>"><?php echo $value->name;?></a></li>
    
        <?php
        $cat_id = $value->term_id;
        $post_id = 'category_'.$cat_id;
        ?>
    <?php endforeach; ?>

    お手数をおかけしますが
    ご教授いただけませんでしょうか。

    どうぞよろしくお願いします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • こんにちは

    get_terms の戻り値はタームオブジェクトの配列(デフォルト)です。タームオブジェクトの count フィールドで投稿数を取得することができます。
    http://wpdocs.osdn.jp/関数リファレンス/get_terms#.E6.88.BB.E3.82.8A.E5.80.A4

    例)

    if ( $value->count > 0 ) {
    	// 投稿あり
    	echo '<li><a href="' . get_category_link( $value->term_id ) . '">' . esc_html( $value->name ) . '</a></li>';
    } else {
    	// 投稿なし
    	echo '<li>' . esc_html( $value->name ) . '</li>';
    }

    >ishitaka様

    丁寧なご回答、誠にありがとうございます!

    ご指導いただきましたコードを挿入したところ意図通りの動作になりました。

    本当にどうもありがとうございました。

    今後ともどうぞよろしくお願いします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「カテゴリ名出力の際、エントリーがあるカテゴリと無いカテゴリで条件分岐する方法」には新たに返信することはできません。