получить один термин таксономии из нескольких выбранных терминов - PullRequest
0 голосов
/ 04 октября 2018

Я столкнулся с несколько сложной ситуацией с моими терминами таксономии.У меня есть список терминов таксономии.

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;
    }
}

, которыйотлично работает для меня, но теперь я выбрал два термина таксономии 2019 и coming soon.Если выбраны оба, я хочу показать только 2019, я не хочу показывать coming soon рядом с 2019, но если выбран только coming soon, то я хочу показывать в ближайшее время.

1 Ответ

0 голосов
/ 04 октября 2018

Вы можете считать термины и фильтровать их соответственно.Это может быть слишком многословно, но может помочь:

$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;
    }
  }
}   
...