Проверяем, принадлежит ли запись к заданной категории или таксономии
Для стандартной категории
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 записи), во втором название таксономии.