Krótki snippet, który rozszerza funkcję in_category, dzięki czemu możemy sprawdzić czy dany wpis znajduje się w danej kategorii lub dziecku/gałęzi potomnej kategorii:
<?php
///#################################category-expanded
function in_category_extended($category) {
// easy out
if (!(is_category() or is_single())) return false;
// retrieve specified category (ID or slug)
$obj_specified_category = is_numeric($category) ? get_category($category) : get_category_by_slug($category);
if (empty($obj_specified_category->cat_ID)) return false;
// we're viewing a category
if (is_category()) {
$current_category_ID = get_query_var('cat');
return ($obj_specified_category->cat_ID == $current_category_ID or cat_is_ancestor_of($obj_specified_category->cat_ID,$current_category_ID));
}
// we're viewing a post
else {
global $wp_query;
$obj_post = $wp_query->get_queried_object();
if (empty($obj_post->ID)) return false;
if (in_category($obj_specified_category->cat_ID, $obj_post->ID)) return true;
else return in_category(get_term_children($obj_specified_category->cat_ID, 'category'), $obj_post->ID);
}
}
///#################################category-expanded
?>