カテゴリーのIDから投稿記事数を返す方法
-
親カテゴリーと子カテゴリーを表示させる方法で、
「wp_list_cats()」 を使えば手っ取り早いんですけれど・・・。「wp_list_cats()」 だと、
<li></li>
で囲われる
記事投稿のない記事までにリンクが貼られてしまうなどの理由から、自分でPHPで構築しようとしています。
まず、実現したいことは、「親カテゴリーと子カテゴリーの取得」 です。
その際の条件として、下記のことを考えています。
1. 記事が投稿されていないカテゴリーにはリンクを貼らない
2. 記事が投稿されていないカテゴリーには投稿数を表示せず、
記事が投稿されているカテゴリーには投稿数を表示する例1. カテゴリーに記事が投稿されている場合
<a href="">未分類</a> [10]
例2. カテゴリーに記事が投稿されていない場合
未分類
[ ] の中身が、そのカテゴリーに含まれる記事投稿数です。
自分なりに、アルゴリズムは次のように考えました。
1. カテゴリーの一覧から親を探し、表示する
(記事が投稿されていれば、リンクを貼り、記事投稿数を表示する)2. 親を見つけたら、その親に含まれる子カテゴリーの一覧を取得し、表示する
(記事が投稿されていれば、リンクを貼り、記事投稿数を表示する)3. 1~2 を foreach 等で繰り返す
このアルゴリズムで躓いているのは、
「カテゴリーに投稿されている記事数を取得する点」 です。今自分が考えているアルゴリズムでは、
カテゴリーに属する記事数の有無を判定してカテゴリーリンクを生成したり、
または記事数を表示するものなので・・・。下記のように書けば、親カテゴリーと子カテゴリーの判別が出来ると思いました。
<?php foreach( get_categories('hide_empty=0') as $cat_list ) : if( get_category_children( $cat_list->cat_ID, '/', '' ) != '' ) { } else { } endforeach; ?>
「get_category_children()」 は、返り値として、
子カテゴリーのIDを羅列で返しているみたいなので、PHPの 「split()」 と 「array_shift()」 で下記のようにすれば、
各々の子カテゴリーを配列に格納できました。$cat_children = split( '/', get_category_children( $cat_list->cat_ID, '/', '' ) ); array_shift( $cat_children );
現在躓いている 「投稿されている記事数を取得する点」 ですが、
今、子カテゴリーを配列で取得した際に、
各々の子カテゴリーに投稿されている記事数の情報はないので、アルゴリズムとして、
「カテゴリーIDを与えてあげれば、そのカテゴリーに属する記事数を返してくれる」
という関数、あるいはPHPでの解決法を探しています。
- トピック「カテゴリーのIDから投稿記事数を返す方法」には新たに返信することはできません。