имеет функцию term if/echo else/эхо


Хорошо, итак, у меня есть навигационное меню с верхним уровнем пунктов меню, являющихся статическими страницами. Когда вы выделяете или посещаете один из них, появляется подменю. У каждого из них есть собственное подменю, и каждое подменю полно пользовательских терминов таксономии. Поскольку WordPress предоставляет только класс текущего элемента меню на странице архива, мне нужно либо добавить свой собственный класс, либо просто добавить пользовательский css, чтобы показать и выделить термин "родительский" при просмотре одного элемента.

Мой проблема в том, что у меня работал код, но потом он перестал работать. Смотрите код ниже

<? 
$has_news = has_term('news');
if ($has_news)
    echo '<style type=text/css>#navbar{display:block}';
else
    echo '';
?>

Это связано с одним из моих других вопросов, но я решил, что лучше всего было бы создать отдельный пакет с разными тегами.

Связанный с Этим Вопрос: Выделите термины навигационного меню

wpверсия: 3.1.2

Author: Community, 2011-05-26

1 answers

Проблема в том, что вам нужно будет передать $post->ID, чтобы не return false.

Лучше использовать is_object_in_taxonomy($object_type, $taxonomy) и заполнить как термин, так и налог в функции. Он возвращает (boolean), поэтому просто добавьте свой класс на основе результата:

echo $class = is_object_in_taxonomy( 'news', 'your_taxonomy' ) ? 'current-whatever' : '';

// or: (simplified for readabilities sake:

// set empty and override only in case.
// So you avoid dropping errors if the condition was not met and $current not set.
$class = '';
if ( is_object_in_taxonomy( 'news', 'your_taxonomy' ) )
    echo $class = 'current-whatever';
 1
Author: kaiser, 2011-05-26 16:35:58