カテゴリが子カテゴリを持つ場合には、子カテゴリの一覧を表示し、持たない場合には通常の投稿一覧を表示したい、という質問をうけました。ついでなので、ブログでコードを共有したいと思います。
category.php
<?php //現在のカテゴリが子カテゴリを持つかどうか判定する $children = get_category_children($cat); //子カテゴリを持つなら、子孫カテゴリのリンクリストを表示 if ($children) : ?> <ul> <?php wp_list_categories('title_li=&child_of='.$cat); ?> </ul> <?php //子カテゴリを持たないなら、タイトルリンクを表示 else: ?> <ul> <?php while(have_posts()) : the_post(); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endwhile; ?> </ul> <?php endif; ?>
$catはWordPressのグローバル変数で、通常、現在のカテゴリIDが入ります。var_dumpで、変数$catの出力結果をみてみましょう。カテゴリIDが、取得されていることを確認できます。
var_dump($cat);
次に、get_category_childrenは子カテゴリを取得するwordpressの関数です。引数に現在のカテゴリID「$cat」を入れます。
//現在のカテゴリが子カテゴリを持つかどうか判定する $children = get_category_children($cat); var_dump($children);
var_dumpで、変数$childrenの出力結果をみてみましょう。
すると、子カテゴリを持つ親カテゴリでは、「string(6) “/17/19″」のように子カテゴリIDが出力され、それ以外の場合は、「string(0) “”」のように空になることがわかります
これを利用して、ifで条件分岐します。
<?php if ($children) : ?> 子カテゴリを持つ場合 <?php else: ?> 子カテゴリを持たない場合 <?php endif; ?>
子カテゴリを持つなら、wp_list_categoriesで、リンクリストを出力し、子カテゴリを持たないならば、通常のループで投稿一覧を出力します。
デザイナーさんの時間短縮のためのイラレweb素材
季節イベントのワンポイント素材やサービスロゴ、ウェブページのアクセントに使えそうなイラストレーター/ベクター/パスデータのeps素材を無料配布しているダウンロードサイトです。 各ページの【ダウンロードリンク】よりご使用下さい。