从多个选定术语中获得一个分类术语

时间:2018-10-04 08:15:41

标签: php wordpress taxonomy

我的分类法术语面临着一些复杂的情况。我有分类术语列表。

Taxonomy (property-status):
--2018
--2019
--2020
--2021
--Coming Soon

我的分类法有多个术语,通常我从分类法中选择一个术语来显示使用此代码获取的术语:

$status_terms = wp_get_post_terms( get_the_ID(), 'property-status');
if($status_terms) {
    foreach ( $status_terms as $term ) {
        echo $term->name;
    }
}

这对我来说很完美,但是现在我选择了两个分类术语2019coming soon。如果同时选择了两者,我只想显示2019,我不想在coming soon旁边显示2019,但是如果只选择了coming soon,那么我想很快显示

1 个答案:

答案 0 :(得分:1)

您可以计算术语并进行相应过滤。这可能有点太冗长,但可以解决问题:

$status_terms = wp_get_post_terms( get_the_ID(), 'property-status');
if($status_terms) { 
    // Get the term names only
    $term_names = array_map(function($term) { return $term->name; }, $status_terms);
    if ((count($term_names) > 1) && in_array('coming-soon', $term_names)) {
        // More than one term and coming-soon. Filter it out
        foreach ( $status_terms as $term ) {
            if ($term->name != 'coming-soon') {
                echo $term->name;
            }
        }
    } else {
        // Show everything
        foreach ( $status_terms as $term ) {
            echo $term->name;
        }
    }
}   

更短的解决方案:

if($status_terms) { 
  $many_terms = (count($status_terms) > 1);
  foreach ( $status_terms as $term ) {
    if ($many_terms) {
        if ($term->name != 'coming-soon') {
            echo $term->name;
        }
    } else {
        echo $term->name;
    }
  }
}