質問するログイン新規登録

回答編集履歴

2

コード完成版に置き換え

2017/02/15 07:41

投稿

退会済みユーザー
answer CHANGED
@@ -1,17 +1,11 @@
1
+ **2017/2/15 コードができあがったので、回答を全面更新しました**
2
+
1
- 以下実装できま
3
+ 以下の機能を実装しています
2
4
  - 親>子>孫とネストされた状態
3
5
  - ulタグに階層に沿ったクラス名を出力
4
6
  - 表示中ページに該当するカテゴリ名にクラス名「current-cat」
5
-
6
- 以下は実装できていません。
7
7
  - 上位カテゴリに「current-cat-parrent」
8
8
 
9
- 中途半端な回答となってしまい申し訳ないですが、
10
- よろしければお試しください。
11
-
12
- (個人的に実装方法に興味があるので、
13
- 実装できていない部分の実装方法を今後思いついたら、こちらに記載します)
14
-
15
9
  ```PHP
16
10
  // sidebar.php
17
11
  <?php
@@ -19,6 +13,7 @@
19
13
  function hierarchical_category_tree( $cat, $year, $depth = 0, $taxonomy = 'category' ) {
20
14
 
21
15
  $now_cat = get_query_var('cat');
16
+ $now_cat_ancestors = (empty($now_cat)) ? ('') : (get_ancestors($now_cat, $taxonomy));
22
17
 
23
18
  // $ul_class
24
19
  if( $depth == 0 ) {
@@ -42,16 +37,24 @@
42
37
  echo '<ul' . $ul_class . '>';
43
38
  foreach( $categories as $cat ) :
44
39
  $count = my_get_count_posts( $year, $cat );
45
-
46
- // $li_class
40
+
47
- if( $cat->term_id == $now_cat) {
48
- $li_class = ' class="current-cat"';
49
- }
50
- else {
51
- $li_class = '';
52
- }
53
-
54
41
  if ( $count > 0 ) { // 投稿数があるカテゴリを出力
42
+ // $li_class
43
+ if( $cat->term_id == $now_cat) {
44
+ $li_class = ' class="current-cat"';
45
+ }
46
+ else if( !empty($now_cat_ancestors) ) {
47
+ if( $cat->term_id == $now_cat_ancestors[0] ) {
48
+ $li_class = ' class="current-cat-parent"';
49
+ }
50
+ else {
51
+ $li_class = '';
52
+ }
53
+ }
54
+ else {
55
+ $li_class = '';
56
+ }
57
+
55
58
  echo '<li' . $li_class . '>';
56
59
  echo '<a href="'. get_category_link( $cat->term_id ) . '">' . $cat->name . ' (' . $count . ')</a>';
57
60
  echo '</li>';

1

コードの間違いを修正

2017/02/15 07:41

投稿

退会済みユーザー
answer CHANGED
@@ -30,6 +30,9 @@
30
30
  else if( $depth == 2 ) {
31
31
  $ul_class = ' class="grandchild"';
32
32
  }
33
+ else {
34
+ $ul_class = '';
35
+ }
33
36
 
34
37
  $args = array(
35
38
  'parent' => $cat,
@@ -44,6 +47,9 @@
44
47
  if( $cat->term_id == $now_cat) {
45
48
  $li_class = ' class="current-cat"';
46
49
  }
50
+ else {
51
+ $li_class = '';
52
+ }
47
53
 
48
54
  if ( $count > 0 ) { // 投稿数があるカテゴリを出力
49
55
  echo '<li' . $li_class . '>';