サポート » 使い方全般 » カテゴリーの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での解決法を探しています。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • カテゴリーIDを与えてあげれば、そのカテゴリーに属する記事数を返してくれる

    get_category($id)->category_count;

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック「カテゴリーのIDから投稿記事数を返す方法」には新たに返信することはできません。