回答編集履歴

2 add_shortcodeが抜けてた

amaranthine

amaranthine score 488

2016/02/13 13:46  投稿

```php
$postsNumber = get_category($catID)->category_count;
return $postsNumber;
```
部分を
```php
$postsNumber = get_category($catID);
return $postsNumber->category_count;
```
とかですかね。
---
子カテゴリ数も全部取得:サンプルコード
テストしてないですが、こんな感じです
```php
function getPostsNumber($atts) {
   extract(shortcode_atts(array(
       'name' => '',
   ), $atts));
   
   //対象カテゴリのターム情報を取得
   $target_cat_term = get_term_by('name', $name, 'category');
   
   //親カテゴリのカウント数
   $target_cat_count = $target_cat_term->count;
   
   //子カテゴリ配列を取得
   $child_cat_lists = $catlist = get_term_children($target_cat_term->term_id, 'category');
   
   //子カテゴリカウント総数用変数の初期化
   $child_cat_count = 0;
   
   //子カテゴリ配列をそれぞれカウント足す
   foreach($child_cat_lists as $child_term_id) {
       $each_cat_term = get_term_by('id', $child_term_id, 'category');
       $child_cat_count = $child_cat_count + $each_cat_term->count;
   }
   
   //親カテゴリカウントと子カテゴリカウント総数を足す
   $postsNumber = $target_cat_count + $child_cat_count;
   return $postsNumber;
}
add_shortcode('postsNumber', 'getPostsNumber');  
```
新しい質問を投稿するのがteratail的には正しそうですが(--;
1 コメントでの質問に回答

amaranthine

amaranthine score 488

2016/02/13 13:44  投稿

```php
$postsNumber = get_category($catID)->category_count;
return $postsNumber;
```
部分を
```php
$postsNumber = get_category($catID);
return $postsNumber->category_count;
```
とかですかね。
とかですかね。
---
子カテゴリ数も全部取得:サンプルコード
テストしてないですが、こんな感じです
```php
function getPostsNumber($atts) {
   extract(shortcode_atts(array(
       'name' => '',
   ), $atts));
   
   //対象カテゴリのターム情報を取得
   $target_cat_term = get_term_by('name', $name, 'category');
   
   //親カテゴリのカウント数
   $target_cat_count = $target_cat_term->count;
   
   //子カテゴリ配列を取得
   $child_cat_lists = $catlist = get_term_children($target_cat_term->term_id, 'category');
   
   //子カテゴリカウント総数用変数の初期化
   $child_cat_count = 0;
   
   //子カテゴリ配列をそれぞれカウント足す
   foreach($child_cat_lists as $child_term_id) {
       $each_cat_term = get_term_by('id', $child_term_id, 'category');
       $child_cat_count = $child_cat_count + $each_cat_term->count;
   }
   
   //親カテゴリカウントと子カテゴリカウント総数を足す
   $postsNumber = $target_cat_count + $child_cat_count;
   return $postsNumber;
}
```
新しい質問を投稿するのがteratail的には正しそうですが(--;

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る