检查Foreach循环中的计数

时间:2018-08-22 作者:Joe

我已经在我的面包屑中使用了一个函数。面包屑显示特定分类类别的自定义URL。它工作得很好,但是,如果帖子被分为多个类别,我需要帮助。

<?php 

function customFruitBreadcrumbs() {
  $terms = get_the_terms( $post->ID , \'fruit_category\' );

      foreach ( $terms as $term ) {
          $term_link = get_term_link( $term, \'fruit_category\' );

          if( is_wp_error( $term_link ) )
          continue;

            switch ($term->name) {
              case "Spring":
                  echo \'<a href="/fruits/spring-fruits/">Spring Fruits</a> » \';
                  break;
              case "Summer":
                  echo \'<a href="/fruits/summer-fruits/">Summer Fruits</a> » \';
                  break;
              case "Autumn":
                  echo \'<a href="/fruits/autumn-fruits/">Autumn Fruits</a> » \';
                  break;
              case "Winter":
                  echo \'<a href="/fruits/winter-fruits/">Winter Fruits</a> » \';
                  break;
              default:
                  echo \'\';
            }

      }
}

?>
此函数使用switch语句在我的面包屑中显示正确的标记。当职位有2个以上的类别(如夏季和春季)时,问题就会出现。

如果类别==1,如何检查类别计数以放置switch语句?如果>1个类别,我只想显示:

echo \'<a href="/fruits/">Fruits</a> » \';

1 个回复
最合适的回答,由SO网友:Levi Dulstein 整理而成

您可以很容易地实现这一点,只需使用术语计算数组。

此外,如果我可以提出更多建议,我会更早一点在foreach循环之外检查WP\\u错误,而不是检查每个术语,尤其是您没有在任何地方使用$term\\u link变量。

只是检查一下get_the_terms() 如果不希望打印错误消息,则在这种情况下返回一个数组就足够了。

function customFruitBreadcrumbs() {
     $terms = get_the_terms( $post->ID , \'fruit_category\' );

     // do nothing if you got an error or no terms at all
     if ( ! is_array( $terms ) ) {
          return;
     }

     // here\'s your link for multiple terms
     if ( count($terms) > 1 ) {
          echo \'<a href="/fruits/">Fruits</a> » \';
          return;
     }

     // if you got so far you know you\'ve got exactly one term in the array at this point,
     // so you can go with the switch and get rid of the foreach loop completely

     switch ($terms[0]->name) {
          case "Spring":
              echo \'<a href="/fruits/spring-fruits/">Spring Fruits</a> » \';
              break;
          case "Summer":
              echo \'<a href="/fruits/summer-fruits/">Summer Fruits</a> » \';
              break;
          case "Autumn":
              echo \'<a href="/fruits/autumn-fruits/">Autumn Fruits</a> » \';
              break;
          case "Winter":
              echo \'<a href="/fruits/winter-fruits/">Winter Fruits</a> » \';
              break;
          default:
              echo \'\';
     }
}

结束