###前提
お世話になります。
カテゴリ項目の出力について質問です。
質問掲示板や参考サイトを元に、現在以下ソースコードでサイドバーを表示しております。
出力条件としては、「本年度のみ投稿が存在するカテゴリ」でして、投稿数を出す関数を使ってフィルタリングをしております。
###該当のソースコード
// sidebar.php <?php function hierarchical_category_tree( $cat, $year, $taxonomy = 'category' ) { $args = array( 'parent' => $cat, ); $categories = get_categories($args); if( $categories ) : foreach( $categories as $cat ) : $count = my_get_count_posts( $year, $cat ); if ( $count > 0 ) { // 投稿数があるカテゴリを出力 echo '<ul><li><a href="URL">' . $cat->name . ' (' . $count . ')</a></li></ul>'; hierarchical_category_tree( $cat->term_id, $year ); } endforeach; endif; echo "\n"; } function my_get_count_posts( $year, $term ) { //投稿数を出す $the_query = new WP_Query( array( 'year' => $year, 'cat' => $term->term_id, 'posts_per_page' => -1 )); return $the_query->post_count; } ?> <?php hierarchical_category_tree( 0, date('Y') );?>
上記コードで以下のように出力されます。
<ul><li><a href="URL">親 (7)</a></li></ul> <ul><li><a href="URL">子A (2)</a></li></ul> <ul><li><a href="URL">孫A (2)</a></li></ul> <ul><li><a href="URL">子B (5)</a></li></ul> <ul><li><a href="URL">孫B (3)</a></li></ul> <ul><li><a href="URL">孫C (2)</a></li></ul>
###実現したいこと
理想は以下のように、親>子>孫とネストされた状態かつ、ulタグに階層に沿ったクラス名を出力したいです。
またできれば、wp_list_categories()のcurrent_categoryパラメータのように、
表示中ページに該当するカテゴリ名にクラス名「current-cat」、上位カテゴリに「current-cat-parrent」をつけたいです。
<ul class="sidebar parent"> <li><a href="URL" >親 (7)</a> <ul class='child'> <li><a href="URL" >子A (2)</a> <ul class='grandchild'> <li><a href="URL" >孫A (2)</a></li> </ul> </li> <li class="current-cat-parent"><a href="URL" >子B (5)</a> <ul class='grandchild'> <li class="current-cat"><a href="URL" >孫B (3)</a></li> <li><a href="URL" >孫C (2)</a></li> </ul> </li> </ul> </li> </ul>
###試したこと
各パラメータやタグ位置をいじってみたりと色々試したのですが解決せず、
おそらくget_categories()のパラメータやforeach()の部分を改変する必要があると思いますが、
そこまでの能力がなく、参考サイトを漁っていますが進展がありません。
どなたかお力添えをいただけないでしょうか。
宜しくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/14 19:38
2017/02/14 20:22
退会済みユーザー
2017/02/15 07:44
2017/02/16 15:28