回答編集履歴

2

$termsが3件以下の場合のforeach文の中身を修正しました。

2019/08/18 06:32

投稿

Take_it
Take_it

スコア357

test CHANGED
@@ -26,7 +26,7 @@
26
26
 
27
27
  foreach ( $terms as $term ):
28
28
 
29
- echo '<li class="categoryItem categoryItem--' . esc_html($term->slug) .'"><span class="categoryItem--text">'. esc_html($term->name) . '</span></li>';
29
+ echo '<li class="categoryItem categoryItem--' . esc_html($terms[$cnt]->slug) .'"><span class="categoryItem--text">'. esc_html($terms[$cnt]->name) . '</span></li>';
30
30
 
31
31
  endforeach;
32
32
 

1

回答コードの不具合を修正

2019/08/18 06:32

投稿

Take_it
Take_it

スコア357

test CHANGED
@@ -1,4 +1,10 @@
1
1
  count()を使って個数を取得して条件分岐すればいいのでは。
2
+
3
+
4
+
5
+ 以下、先ほどの回答からちょっと修正します。
6
+
7
+ (手元に検証に使えるWordpressの環境がないので検証していません)
2
8
 
3
9
 
4
10
 
@@ -6,21 +12,15 @@
6
12
 
7
13
  $terms = get_the_terms( $post->ID, 'person' , array('orderby' => 'ID', 'order' => 'ASC') ) ;
8
14
 
15
+ if(count($terms)>=4):
9
16
 
17
+ for($cnt=0,$cnt<3,++$cnt):
10
18
 
11
- if(count($terms)>3):
12
-
13
- for($cnt=1,$cnt<=3,++$cnt):
14
-
15
- foreach ( $terms as $term ):
16
-
17
- echo '<li class="categoryItem categoryItem--' . esc_html($term->slug) .'"><span class="categoryItem--text">'. esc_html($term->name) . '</span></li>';
19
+ echo '<li class="categoryItem categoryItem--' . esc_html($terms[$cnt]->slug) .'"><span class="categoryItem--text">'. esc_html($terms[$cnt]->name) . '</span></li>';
18
-
19
- endforeach;
20
20
 
21
21
  endfor;
22
22
 
23
- echo '<li class="categoryItem categoryItem--00"><span class="ccategoryItem--text">他</span></li>';
23
+ echo '<li class="categoryItem categoryItem--00"><span class="ccategoryItem--text">他</span></li>';
24
24
 
25
25
  else:
26
26