Home > wordpress > カテゴリ一覧を出力するときに、カテゴリに記事がない場合は表示方法を変えたい!

カテゴリ一覧を出力するときに、カテゴリに記事がない場合は表示方法を変えたい!

と思ったので色々調べてみたんだけど、どうもうまい方法が見つからない。
できればforeachでループさせて、Wordpressに自動で判別させたい!
ので、悩んだあげく以下のようにすることにした

 


<dl class="glossary-index-list">
<dt class="glossary-index-ttl"><img src="<?php bloginfo("template_directory") ?>/public/images/glossary/glossary-index.png" alt="索引"></dt>
<?php
$cat_all = get_terms("category","fields=all&get=all");
foreach($cat_all as $value):
?>
<?php
$havePosts = get_category($value->term_id)->category_count;
if($havePosts > 0):
?>
<dd class="glossary-index-item"><a href="<?php echo get_category_link($value->term_id);?>"><?php echo $value->name; ?></a></dd>
<?php else: ?>
<dd class="glossary-index-item noPost"><?php echo $value->name; ?></dd>
<?php endif; ?>
<?php endforeach; ?>
</dl>

説明は後ほど…

さて、ここで何が行われているのかという話ですわ
まず

<?php
$cat_all = get_terms(“category”,”fields=all&get=all”);
foreach($cat_all as $value):
?>

この部分。
これは、カテゴリーを全部拾ってきて一覧に出せや
という話ですね。カテゴリーのデータを全部取得して、それを$cat_allに代入しています。
ほいでforeachを使ってカテゴリーの数の分だけループさせて、指定したHTMLのフォーマットで吐き出させる。
その際に先ほどの$cat_allを$valueとしてちょうだいと言っています。(深い意味はわからんが)
ほいで、ループするときに、カテゴリーの中に記事がある場合とない場合でちがうHTMLで出力したいちゅうことです。

その部分が

<?php
$havePosts = get_category($value->term_id)->category_count;
if($havePosts > 0):
?>

これ
get_categoryで個別のカテゴリーを呼び出して、さらにcategory_countでその中の記事数を呼び出して、それを$havePostに代入しています。
ほいでifで$havePostが0より多い数だったらこれしろや!
でなかったらあれしろや!
という命令を書いています。

以上!

Home > wordpress > カテゴリ一覧を出力するときに、カテゴリに記事がない場合は表示方法を変えたい!

Search
Feeds
Meta

Return to page top