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

27 мар. 2014 г., 16:36:52
Просмотры: 16K
Голосов: 1

Я хочу отображать текст в зависимости от категории моей пользовательской таксономии, например:

если категория пользовательского типа записи это X, тогда вывести Текст Y.

Я попробовал это, но это не работает:

global $post; 
if (($post->post_type == 'myposttype') && is_category('slug-name-of-cat')) {
 echo 'Мой текст'

 }

Есть идеи?

2
Комментарии

Попробуйте использовать is_tax('taxonomy', 'term') - Посмотреть в Codex

Howdy_McGee Howdy_McGee
27 мар. 2014 г. 16:44:44

У вас также есть пробел в "is _category". Должно быть "is_category". И проверьте правильно ли указан слаг. Вы действительно использовали "slug-" в слаге категории?

mrwweb mrwweb
27 мар. 2014 г. 17:30:43
Все ответы на вопрос 3
2

Функция is_category() не работает на страницах архивов пользовательских таксономий. Правильный условный тег в данном случае — is_tax(), который принимает имя таксономии в качестве первого параметра и строку|число|массив названий терминов, их ярлыков или ID в качестве второго параметра.

Таким образом, ваше условное выражение может выглядеть примерно так:

if ( is_tax( 'my_taxonomy', 'slug-name-of-the-term') ) {
    echo 'Мой текст';
}

ИЗМЕНЕНИЕ

Дополнительно, чтобы проверить, принадлежит ли запись к определённому термину, следует использовать has_term() для проверки конкретного термина

global $post; 
if (    ( $post->post_type == 'myposttype' ) 
     && has_term( 'slug-name-of-the_term', 'my_taxonomy' )
) {
    echo 'Мой текст';
}
7 янв. 2016 г. 12:45:08
Комментарии

После этой строки с echo все еще нужна точка с запятой. ;-)

heytricia heytricia
23 июн. 2017 г. 23:07:04

версия "edit" сработала у меня

Nuno Sarmento Nuno Sarmento
25 нояб. 2020 г. 15:54:42
0
-1

Условные функции is_* работают с запросом, а не с текущей записью. Другими словами, они сообщают информацию о текущей странице, но не о текущей записи.

  • is_category() проверяет, является ли текущая страница архивом категории
  • has_category() проверяет, принадлежит ли запись к определённой категории

Судя по вашему описанию, вы имели в виду последний вариант.

27 мар. 2014 г. 21:22:01
1
-2

Обратитесь к этому кодексу для подробного понимания: https://codex.wordpress.org/Function_Reference/get_categories

Вы можете сделать что-то вроде этого:

        $args = array(
                'taxonomy'     => **$your_taxonomy**,
                'orderby'      => name,
                'title_li'     => $title,
        );
        $sub_cats = get_categories( $args );
        if( !empty($sub_cats) ) {
         // выводим наш результат
        }
7 янв. 2016 г. 11:46:16
Комментарии

Вы совершенно не в том направлении двигаетесь. Мне бы хотелось увидеть какое-то объяснение, почему вы хотите использовать get_categories

Pieter Goosen Pieter Goosen
7 янв. 2016 г. 12:55:11