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

回答編集履歴

2

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

2019/08/18 06:32

投稿

Take_it
Take_it

スコア357

answer CHANGED
@@ -12,7 +12,7 @@
12
12
  echo '<li class="categoryItem categoryItem--00"><span class="ccategoryItem--text">他</span></li>';
13
13
  else:
14
14
  foreach ( $terms as $term ):
15
- echo '<li class="categoryItem categoryItem--' . esc_html($term->slug) .'"><span class="categoryItem--text">'. esc_html($term->name) . '</span></li>';
15
+ echo '<li class="categoryItem categoryItem--' . esc_html($terms[$cnt]->slug) .'"><span class="categoryItem--text">'. esc_html($terms[$cnt]->name) . '</span></li>';
16
16
  endforeach;
17
17
  endif;
18
18
  ```

1

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

2019/08/18 06:32

投稿

Take_it
Take_it

スコア357

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