回答編集履歴
5
コメントからの要望で修正
answer
CHANGED
@@ -4,6 +4,10 @@
|
|
4
4
|
ですが、今回の場合に限り、正確な動作にはなるかと思います。
|
5
5
|
また、不都合ございましたら、コメントください。
|
6
6
|
|
7
|
+
※追記:かなり静的な作りではありますが、できる限り動的になるよう、使うカテゴリIDを配列に入れ、
|
8
|
+
回す感じに変更しました。
|
9
|
+
配列の中の数値を変えれば、対応するカテゴリで記事数をカウントできるようになっています。
|
10
|
+
|
7
11
|
```php
|
8
12
|
<?php
|
9
13
|
// ここで、親カテゴリのカウントアップする変数を用意
|
@@ -11,10 +15,21 @@
|
|
11
15
|
$parentCountAll = 0;
|
12
16
|
|
13
17
|
// 今回に必要な子カテゴリの数だけ、カテゴリ取得して、記事カウント数を足していく(13〜19のカテゴリIDのもの)
|
18
|
+
// 入れるカテゴリの番号の配列を用意する
|
19
|
+
$catIDs = array(
|
20
|
+
13,
|
21
|
+
14,
|
22
|
+
15,
|
23
|
+
16,
|
24
|
+
17,
|
25
|
+
18,
|
26
|
+
19
|
27
|
+
);
|
28
|
+
|
14
|
-
|
29
|
+
foreach($catIDs as $catId) {
|
15
30
|
$args = array(
|
16
31
|
'orderby' => 'name',
|
17
|
-
'include' => $
|
32
|
+
'include' => $catId,
|
18
33
|
'hide_empty' => 0,
|
19
34
|
'pad_counts' => 1
|
20
35
|
);
|
4
質問の修正を受け、回答を修正
answer
CHANGED
@@ -1,3 +1,53 @@
|
|
1
|
+
質問の修正を受け、回答を修正いたします。
|
2
|
+
ご承知いただきたいのが、**かなり野暮で、他では応用の効かない書き方**となることです。
|
3
|
+
(カテゴリが増えたりすると、構文の修正が必要になる)
|
4
|
+
ですが、今回の場合に限り、正確な動作にはなるかと思います。
|
5
|
+
また、不都合ございましたら、コメントください。
|
6
|
+
|
7
|
+
```php
|
8
|
+
<?php
|
9
|
+
// ここで、親カテゴリのカウントアップする変数を用意
|
10
|
+
// 他の親に関しては、また別途別名の親カウント変数を用意する
|
11
|
+
$parentCountAll = 0;
|
12
|
+
|
13
|
+
// 今回に必要な子カテゴリの数だけ、カテゴリ取得して、記事カウント数を足していく(13〜19のカテゴリIDのもの)
|
14
|
+
for ($i=13; $i < 20; $i++) {
|
15
|
+
$args = array(
|
16
|
+
'orderby' => 'name',
|
17
|
+
'include' => $i,
|
18
|
+
'hide_empty' => 0,
|
19
|
+
'pad_counts' => 1
|
20
|
+
);
|
21
|
+
$categories = get_categories( $args );
|
22
|
+
foreach ( $categories as $category ) {
|
23
|
+
$parentCountAll += $category->count;
|
24
|
+
}
|
25
|
+
}
|
26
|
+
|
27
|
+
?>
|
28
|
+
<td width="18%" align="center" valign="middle" bgcolor="#ccffff">
|
29
|
+
<?php
|
30
|
+
$args = array(
|
31
|
+
'orderby' => 'name',
|
32
|
+
'include' => '2'
|
33
|
+
);
|
34
|
+
$categories = get_categories( $args );
|
35
|
+
foreach ( $categories as $category ) {
|
36
|
+
echo '<a href="' . get_category_link( $category->term_id ) . '">' . $category->name .' </a>';
|
37
|
+
}
|
38
|
+
?><br/>
|
39
|
+
|
40
|
+
<?php
|
41
|
+
// 親カテゴリでは、$parentCountAllを表示するのみにする
|
42
|
+
echo $parentCountAll;
|
43
|
+
|
44
|
+
?>
|
45
|
+
|
46
|
+
</td>
|
47
|
+
<!-- 以下は質問者さんの書いた通りのままでオーケー -->
|
48
|
+
```
|
49
|
+
|
50
|
+
-------- 以下元回答 --------
|
1
51
|
少し野暮ったいですが、表示の前に、先にforeachでデータを用意して、そのデータを元に、
|
2
52
|
数を表示させましょう。
|
3
53
|
|
3
一応、カテゴリ単体でも表示できるよう修正
answer
CHANGED
@@ -5,24 +5,33 @@
|
|
5
5
|
<td>
|
6
6
|
北海道・東北(この箇所のコードは省略)
|
7
7
|
<?php
|
8
|
-
|
8
|
+
/*
|
9
9
|
$args = array(
|
10
10
|
'orderby' => 'name',
|
11
11
|
'include' => '2',
|
12
12
|
'pad_counts' => 1
|
13
13
|
);
|
14
|
+
*/
|
15
|
+
// カテゴリを限定しないため、カテゴリ取得のオプションをつけない
|
14
|
-
$categories = get_categories(
|
16
|
+
$categories = get_categories();
|
15
|
-
// 記事数をカウントする変数を用意
|
17
|
+
// 子カテゴリの記事数をカウントする変数を用意
|
16
18
|
$catParentAllCount = 0;
|
17
19
|
// 記事の合計数を計算
|
20
|
+
// カテゴリ全てで走査
|
18
21
|
foreach ( $categories as $category ) {
|
22
|
+
|
23
|
+
if ($category->parent) {
|
24
|
+
// まず親がいる(親を除外したい)
|
25
|
+
$parent = $category->parent;
|
26
|
+
if ($parent->cat_ID == 2) {
|
27
|
+
// 親のIDが2である
|
28
|
+
// ここでようやっとカウントアップ
|
19
|
-
|
29
|
+
$catParentAllCount += $category->count;
|
30
|
+
}
|
31
|
+
}
|
20
32
|
}
|
21
33
|
|
22
|
-
|
34
|
+
echo $catParentAllCount;
|
23
|
-
// 北海道・東北の親カテゴリの場合は、カウントの合計値、そうでない時は、通常のカテゴリの記事数を表示
|
24
|
-
echo ($category->cat_ID == 2 ? $catParentAllCount : $category->count);
|
25
|
-
}
|
26
35
|
|
27
36
|
?>
|
28
37
|
</td>
|
2
カウントアップがうまくできていないようなので、三項演算子を解除した。
answer
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
$catParentAllCount = 0;
|
17
17
|
// 記事の合計数を計算
|
18
18
|
foreach ( $categories as $category ) {
|
19
|
-
$catParentAllCount +=
|
19
|
+
$catParentAllCount += $category->count;
|
20
20
|
}
|
21
21
|
|
22
22
|
foreach ( $categories as $category ) {
|
1
計算がずれないよう、一応()で計算を囲った。
answer
CHANGED
@@ -14,13 +14,14 @@
|
|
14
14
|
$categories = get_categories( $args );
|
15
15
|
// 記事数をカウントする変数を用意
|
16
16
|
$catParentAllCount = 0;
|
17
|
+
// 記事の合計数を計算
|
17
18
|
foreach ( $categories as $category ) {
|
18
|
-
$catParentAllCount += $category->cat_ID == 2 ? 0 : $category->count;
|
19
|
+
$catParentAllCount += ($category->cat_ID == 2 ? 0 : $category->count);
|
19
20
|
}
|
20
21
|
|
21
22
|
foreach ( $categories as $category ) {
|
22
23
|
// 北海道・東北の親カテゴリの場合は、カウントの合計値、そうでない時は、通常のカテゴリの記事数を表示
|
23
|
-
echo $category->cat_ID == 2 ? $catParentAllCount : $category->count;
|
24
|
+
echo ($category->cat_ID == 2 ? $catParentAllCount : $category->count);
|
24
25
|
}
|
25
26
|
|
26
27
|
?>
|