Условный оператор для пользовательской таксономии

12 июл. 2013 г., 22:57:29
Просмотры: 19.6K
Голосов: 1

Не могу разобраться, как этого добиться, если это вообще возможно. Нужен аналог is_category, но для пользовательской таксономии, которую я создал. Таксономия называется Taxonomy Name и содержит 2 элемента: Taxonomy One и Taxonomy Two. Вот что я пробовал:

<?php if ( has_term('taxonomy-one' ) ) {?>
    <div class="test" style="color: red"><?php the_field('field_name'); ?></div>
<?php } elseif ( has_term('taxonomy-two' ) ) {?>
    <div class="test" style="color: green"><?php the_field('field_name'); ?></div>
<?php } ?>

Похоже, что по этой теме нет документации, поэтому я совсем не уверен, возможно ли это. Надеюсь на помощь, любые предложения будут очень ценны!

0
Все ответы на вопрос 1
13

Я почти уверен, что не стоит использовать отрицание в условиях... Если вы проверяете ! is_tax..., это будет истинно не только для других страниц таксономий, но и для одиночных записей, и любых других...

Поэтому это должно выглядеть так:

<?php if ( is_tax('taxonomy-name','taxonomy-one' ) ) {?>
    <div class="test" style="color: red"><?php the_field('field_name'); ?></div>
<?php } elseif ( is_tax('taxonomy-name','taxonomy-two' ) ) {?>
    <div class="test" style="color: green"><?php the_field('field_name'); ?></div>
<?php } ?>

А что касается отсутствия документации... Я не знаю, где вы искали, но есть страница в кодексе для is_tax: http://codex.wordpress.org/Function_Reference/is_tax ;)

P.S. Если вы хотите проверить, относится ли запись к определённому термину, то вам следует использовать функцию has_term.

12 июл. 2013 г. 23:04:26
Комментарии

спасибо за это! Я читал об этом в codex раньше, но на самом деле я не хочу размещать этот код в архиве таксономии, а в архиве произвольного типа записи, к которому я добавил пользовательские таксономии :) Я также пробовал приведенный выше код, который вы предложили, но он не сработал :(

user1374796 user1374796
12 июл. 2013 г. 23:19:30

is_tax проверяет, является ли текущая страница архивом таксономии. Архив произвольного типа записи — это не архив таксономии (так же как индекс записей — это не архив категории)... Так что я не совсем понимаю, чего вы хотите достичь...?

Krzysiek Dróżdż Krzysiek Dróżdż
12 июл. 2013 г. 23:32:30

а, понятно, я не знал этого, я новичок в таксономиях, извините. Я хотел проверить, относится ли запись к одной таксономии или к другой. Если к одной — текст в архиве записей должен быть красным, если к другой — зеленым.

user1374796 user1374796
12 июл. 2013 г. 23:36:37

Без проблем. Вам следует использовать has_term (http://codex.wordpress.org/Function_Reference/has_term).

Krzysiek Dróżdż Krzysiek Dróżdż
12 июл. 2013 г. 23:38:28

Я отредактировал свой вопрос с использованием has_term, но всё равно ничего не работает, ничего не отображается?

user1374796 user1374796
13 июл. 2013 г. 00:09:07

Что такое taxonomy-one в вашем коде? Это термин или название вашей пользовательской таксономии?

Krzysiek Dróżdż Krzysiek Dróżdż
13 июл. 2013 г. 00:12:54

это название термина

user1374796 user1374796
13 июл. 2013 г. 00:26:47

Вы имеете в виду slug? И как называется эта таксономия?

Krzysiek Dróżdż Krzysiek Dróżdż
13 июл. 2013 г. 00:32:24

да, slug, название - 'Taxonomy One'

user1374796 user1374796
13 июл. 2013 г. 00:40:16

А как называется эта пользовательская таксономия? (не термин)

Krzysiek Dróżdż Krzysiek Dróżdż
13 июл. 2013 г. 00:41:21

название этой таксономии - 'Taxonomy Name' с ярлыком 'taxonomy-name'

user1374796 user1374796
13 июл. 2013 г. 00:49:05

Хорошо, попробуйте has_term('taxonomy-one', 'taxonomy-name')

Krzysiek Dróżdż Krzysiek Dróżdż
13 июл. 2013 г. 00:58:56

Вуаля!! это сработало, большое спасибо, очень признателен.

user1374796 user1374796
13 июл. 2013 г. 01:23:11
Показать остальные 8 комментариев