Условный оператор для категории пользовательского типа записи
Я хочу отображать текст в зависимости от категории моей пользовательской таксономии, например:
если категория пользовательского типа записи это X, тогда вывести Текст Y.
Я попробовал это, но это не работает:
global $post;
if (($post->post_type == 'myposttype') && is_category('slug-name-of-cat')) {
echo 'Мой текст'
}
Есть идеи?
Функция 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 'Мой текст';
}

Условные функции is_*
работают с запросом, а не с текущей записью. Другими словами, они сообщают информацию о текущей странице, но не о текущей записи.
is_category()
проверяет, является ли текущая страница архивом категорииhas_category()
проверяет, принадлежит ли запись к определённой категории
Судя по вашему описанию, вы имели в виду последний вариант.

Обратитесь к этому кодексу для подробного понимания: 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) ) {
// выводим наш результат
}
