回答編集履歴

5

コメントからの要望で修正

2019/06/14 08:48

投稿

miyabi_pudding
miyabi_pudding

スコア9528

test CHANGED
@@ -10,6 +10,14 @@
10
10
 
11
11
 
12
12
 
13
+ ※追記:かなり静的な作りではありますが、できる限り動的になるよう、使うカテゴリIDを配列に入れ、
14
+
15
+ 回す感じに変更しました。
16
+
17
+ 配列の中の数値を変えれば、対応するカテゴリで記事数をカウントできるようになっています。
18
+
19
+
20
+
13
21
  ```php
14
22
 
15
23
  <?php
@@ -24,13 +32,35 @@
24
32
 
25
33
  // 今回に必要な子カテゴリの数だけ、カテゴリ取得して、記事カウント数を足していく(13〜19のカテゴリIDのもの)
26
34
 
35
+ // 入れるカテゴリの番号の配列を用意する
36
+
37
+ $catIDs = array(
38
+
39
+ 13,
40
+
41
+ 14,
42
+
43
+ 15,
44
+
45
+ 16,
46
+
47
+ 17,
48
+
49
+ 18,
50
+
51
+ 19
52
+
53
+ );
54
+
55
+
56
+
27
- for ($i=13; $i < 20; $i++) {
57
+ foreach($catIDs as $catId) {
28
58
 
29
59
  $args = array(
30
60
 
31
61
  'orderby' => 'name',
32
62
 
33
- 'include' => $i,
63
+ 'include' => $catId,
34
64
 
35
65
  'hide_empty' => 0,
36
66
 

4

質問の修正を受け、回答を修正

2019/06/14 08:47

投稿

miyabi_pudding
miyabi_pudding

スコア9528

test CHANGED
@@ -1,3 +1,103 @@
1
+ 質問の修正を受け、回答を修正いたします。
2
+
3
+ ご承知いただきたいのが、**かなり野暮で、他では応用の効かない書き方**となることです。
4
+
5
+ (カテゴリが増えたりすると、構文の修正が必要になる)
6
+
7
+ ですが、今回の場合に限り、正確な動作にはなるかと思います。
8
+
9
+ また、不都合ございましたら、コメントください。
10
+
11
+
12
+
13
+ ```php
14
+
15
+ <?php
16
+
17
+ // ここで、親カテゴリのカウントアップする変数を用意
18
+
19
+ // 他の親に関しては、また別途別名の親カウント変数を用意する
20
+
21
+ $parentCountAll = 0;
22
+
23
+
24
+
25
+ // 今回に必要な子カテゴリの数だけ、カテゴリ取得して、記事カウント数を足していく(13〜19のカテゴリIDのもの)
26
+
27
+ for ($i=13; $i < 20; $i++) {
28
+
29
+ $args = array(
30
+
31
+ 'orderby' => 'name',
32
+
33
+ 'include' => $i,
34
+
35
+ 'hide_empty' => 0,
36
+
37
+ 'pad_counts' => 1
38
+
39
+ );
40
+
41
+ $categories = get_categories( $args );
42
+
43
+ foreach ( $categories as $category ) {
44
+
45
+ $parentCountAll += $category->count;
46
+
47
+ }
48
+
49
+ }
50
+
51
+
52
+
53
+ ?>
54
+
55
+ <td width="18%" align="center" valign="middle" bgcolor="#ccffff">
56
+
57
+ <?php
58
+
59
+ $args = array(
60
+
61
+ 'orderby' => 'name',
62
+
63
+ 'include' => '2'
64
+
65
+ );
66
+
67
+ $categories = get_categories( $args );
68
+
69
+ foreach ( $categories as $category ) {
70
+
71
+ echo '<a href="' . get_category_link( $category->term_id ) . '">' . $category->name .' </a>';
72
+
73
+ }
74
+
75
+ ?><br/>
76
+
77
+
78
+
79
+ <?php
80
+
81
+ // 親カテゴリでは、$parentCountAllを表示するのみにする
82
+
83
+ echo $parentCountAll;
84
+
85
+
86
+
87
+ ?>
88
+
89
+
90
+
91
+ </td>
92
+
93
+ <!-- 以下は質問者さんの書いた通りのままでオーケー -->
94
+
95
+ ```
96
+
97
+
98
+
99
+ -------- 以下元回答 --------
100
+
1
101
  少し野暮ったいですが、表示の前に、先にforeachでデータを用意して、そのデータを元に、
2
102
 
3
103
  数を表示させましょう。

3

一応、カテゴリ単体でも表示できるよう修正

2019/06/14 05:46

投稿

miyabi_pudding
miyabi_pudding

スコア9528

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  <?php
14
14
 
15
-
15
+ /*
16
16
 
17
17
  $args = array(
18
18
 
@@ -24,29 +24,47 @@
24
24
 
25
25
  );
26
26
 
27
- $categories = get_categories( $args );
27
+ */
28
28
 
29
+ // カテゴリを限定しないため、カテゴリ取得のオプションをつけない
30
+
31
+ $categories = get_categories();
32
+
29
- // 記事数をカウントする変数を用意
33
+ // 子カテゴリの記事数をカウントする変数を用意
30
34
 
31
35
  $catParentAllCount = 0;
32
36
 
33
37
  // 記事の合計数を計算
34
38
 
39
+ // カテゴリ全てで走査
40
+
35
41
  foreach ( $categories as $category ) {
36
42
 
43
+
44
+
45
+ if ($category->parent) {
46
+
47
+ // まず親がいる(親を除外したい)
48
+
49
+ $parent = $category->parent;
50
+
51
+ if ($parent->cat_ID == 2) {
52
+
53
+ // 親のIDが2である
54
+
55
+ // ここでようやっとカウントアップ
56
+
37
- $catParentAllCount += $category->count;
57
+ $catParentAllCount += $category->count;
58
+
59
+ }
60
+
61
+ }
38
62
 
39
63
  }
40
64
 
41
65
 
42
66
 
43
- foreach ( $categories as $category ) {
67
+ echo $catParentAllCount;
44
-
45
- // 北海道・東北の親カテゴリの場合は、カウントの合計値、そうでない時は、通常のカテゴリの記事数を表示
46
-
47
- echo ($category->cat_ID == 2 ? $catParentAllCount : $category->count);
48
-
49
- }
50
68
 
51
69
 
52
70
 

2

カウントアップがうまくできていないようなので、三項演算子を解除した。

2019/06/13 15:19

投稿

miyabi_pudding
miyabi_pudding

スコア9528

test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
  foreach ( $categories as $category ) {
36
36
 
37
- $catParentAllCount += ($category->cat_ID == 2 ? 0 : $category->count);
37
+ $catParentAllCount += $category->count;
38
38
 
39
39
  }
40
40
 

1

計算がずれないよう、一応()で計算を囲った。

2019/06/13 14:35

投稿

miyabi_pudding
miyabi_pudding

スコア9528

test CHANGED
@@ -30,9 +30,11 @@
30
30
 
31
31
  $catParentAllCount = 0;
32
32
 
33
+ // 記事の合計数を計算
34
+
33
35
  foreach ( $categories as $category ) {
34
36
 
35
- $catParentAllCount += $category->cat_ID == 2 ? 0 : $category->count;
37
+ $catParentAllCount += ($category->cat_ID == 2 ? 0 : $category->count);
36
38
 
37
39
  }
38
40
 
@@ -42,7 +44,7 @@
42
44
 
43
45
  // 北海道・東北の親カテゴリの場合は、カウントの合計値、そうでない時は、通常のカテゴリの記事数を表示
44
46
 
45
- echo $category->cat_ID == 2 ? $catParentAllCount : $category->count;
47
+ echo ($category->cat_ID == 2 ? $catParentAllCount : $category->count);
46
48
 
47
49
  }
48
50