Исключить термин текущего поста в списке терминов таксономии
Под single-CPT.php у меня есть select
тег, который отображает условия моей таксономии. Сначала я возвращаю термин текущего поста, а затем возвращаю остальные. Проблема в том, что у меня есть лишний текущий пост, даже если я выполняю if
test перед отображением других терминов, if test исключает термин текущего поста. Что не так в моем коде ниже? ваша помощь ценна.
<select class="select">
<?php
$my_current_term = wp_get_object_terms(get_the_ID(), 'product_category');
foreach($my_current_term as $c_term)
{
?>
<option value="<?php echo $c_term->name;?>">
<?php echo $c_term->name; ?>
</option>
<?php
}
$all_my_terms = get_terms('product_category');//add asc and order by name in asc
foreach ($all_my_terms as $term1 ) {
if ( $my_current_term->name != $term1->name ) {
$option = '<option value="'.$term1->name.'">';
$option .= $term1->name;
$option .= '</option>';
echo $option;
}
}
?>
</select>
1 ответ
Решение
Вы можете исключить условия при их получении:
$all_my_terms = get_terms( 'product_category', array( 'exclude' => $c_term->term_id ) );
Также при использовании wp_get_object_terms
убедитесь, что вы получите массив идентификаторов терминов, установив fields
аргумент ids
:
wp_get_object_terms( get_the_ID(), 'product_category', array( 'fields' => 'ids' ) );