Проверяем, принадлежит ли запись к заданной категории или таксономии

Для стандартной категории

Скопировано
if( in_category( $cat, $post ) ) {
// принадлежит
}
Показать код

$cat - ID, название или ярлык категории
$post - ID или объект записи

Для проверки текущей записи внутри цикла WordPress второй параметр можно не указывать.

Принадлежит ли запись дереву категорий

Суть в том, что если есть категория А и у нее дочерняя категория Б и есть запись, принадлежащая категории Б, то проверка in_category( 'А' ) вернет ложь. А мы хотим, чтобы такая проверка возвращала истину. Для этого можно использовать такую функцию:

Скопировано
function check_cats_tree_for_post( $cat_id, $_post = null ) {
$cats = get_term_children( $cat_id, 'category' );
$cats[] = $cat_id;
if( in_category( $cats, $_post ) ) return true;
return false;
}
Показать код

Функция вернет true, если запись принадлежит либо самой категории, либо одной из ее дочерних категорий и false в противном случае.

Первый (обязательный) параметр ID проверяемой категории, второй (необязательный) - ID или объект записи.

Для произвольной таксономии

Скопировано
$arr = wp_get_object_terms( $post_id, 'tax_name' );
if( ! is_wp_error( $arr ) && $arr ) {
// принадлежит
}
Показать код

В первом параметре передаем ID записи (как получить ID записи), во втором название таксономии.