Проверьте, имеет ли страница связанный термин?
-
16-10-2019 - |
Вопрос
Я ищу способ сделать некоторую условную логику на терминах, связанных с постом.
По сути, я создал свою собственную таксономию для «возрастных групп» и создал для них три термина. Дети, подростки, взрослые ... в области администратора я хочу проверить термины, которые применяются к конкретному сообщению и на подходе сайта в моем шаблоне страницы я хочу показать конкретное изображение, если термин был связан с постом или другой, если термин не был связан.
У кого -нибудь есть решение для этого ... Я думал, что следующий пример кода будет работать, но это не так. (Кстати - то, что я здесь делаю, меняет изображение на основе CSS).
<li id="kids-<?php if ( is_term( 'Kids' , 'age_groups' ) ) {
echo 'on';
} else {echo 'off';} ?>">Kids Programs</li>
Решение
Привет @NetConstructor:
Первым делом, предполагая Ваша логика сработала, вы можете использовать тройной оператор, чтобы упростить ваш пример:
<li id="kids-<?php echo is_term('Kids','age_groups')
? 'on' : 'off'; ?>">Kids Programs</li>
Похоже, проблема заключается в том, что is_term()
используется, чтобы проверить, существует ли термин, а не в том, связанный ли он с определенным постом. Я думаю, что ты действительно хочешь is_object_in_term()
(что предполагает, что вы находитесь в Петля, т.е. это $post
имеет подходящее значение):
<li id="kids-<?php echo is_object_in_term($post->ID,'age_groups','Kids')
? 'on' : 'off'; ?>">Kids Programs</li>
PS предполагает is_term()
был правильной функцией, на самом деле устарел; term_exists()
заменяет is_term()
; Просто к вашему сведению.