子カテゴリを含むカテゴリーリストを自由なソースで表示:WordPress
WordPressで、子カテゴリを含むカテゴリーリストを自由なソースで表示させる方法をメモ。
サイドバーなどに、
<?php
//カテゴリーリスト&記事一覧
$args=array(
//いらないパラメータは省略可
'type' => 'post',
'child_of' => '',
'parent' => 0,
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => 1,
'hierarchical'=> 1,
'exclude' => '0',
'pad_counts' => false
);
$categories=get_categories($args);
//取得したカテゴリへの各種処理
foreach($categories as $val){
//カテゴリのリンクURLを取得
$cat_link = get_category_link($val->cat_ID);
//子カテゴリのIDを配列で取得
$child_cat_num = count(get_term_children($val->cat_ID,'category'));
//子カテゴリが存在する場合
if($child_cat_num > 0){
//親カテゴリのリスト出力
echo '<li class="parent"><a href="' . $cat_link . '">' . $val -> name . '</a></li>';
echo '<ul class="subcat">';
//子カテゴリの一覧取得条件
$category_children_args = array('parent'=>$val->cat_ID);
//子カテゴリの一覧取得
$category_children = get_categories($category_children_args);
//子カテゴリの数だけリスト出力
foreach($category_children as $child_val){
$cat_link = get_category_link($child_val -> cat_ID);
echo '<li><a href="' . $cat_link . '">' . $child_val -> name . '</a>';
}
echo '</ul>';
}
//子カテゴリが存在しない場合
else{
echo '<li class="parent"><a href="' . $cat_link . '">' . $val -> name . '</a></li>';
}
}
?>
でOK
これで
<ul> <li class="parent"><a href="#">親カテゴリー名</a></li> <ul class="subcat"> <li><a href="#">子カテゴリー名</a></li> </ul> </ul>
といったソースで表示させることが出来ます。
WordPressのおすすめ参考書
bookfan 1号店 楽天市場店
¥3,300 (2026/01/04 15:36時点 | 楽天市場調べ)

