Created
July 24, 2015 15:59
-
-
Save yoren/969d8e48b4e191c98b16 to your computer and use it in GitHub Desktop.
Testing if a post is in a descendant category
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Tests if any of a post's assigned categories are descendants of target categories | |
* | |
* @param int|array $cats The target categories. Integer ID or array of integer IDs | |
* @param int|object $_post The post. Omit to test the current post in the Loop or main query | |
* @return bool True if at least 1 of the post's categories is a descendant of any of the target categories | |
* @see get_term_by() You can get a category by name or slug, then pass ID to this function | |
* @uses get_term_children() Passes $cats | |
* @uses in_category() Passes $_post (can be empty) | |
* @version 2.7 | |
* @link http://codex.wordpress.org/Function_Reference/in_category#Testing_if_a_post_is_in_a_descendant_category | |
*/ | |
if ( ! function_exists( 'post_is_in_descendant_category' ) ) { | |
function post_is_in_descendant_category( $cats, $_post = null ) { | |
foreach ( (array) $cats as $cat ) { | |
// get_term_children() accepts integer ID only | |
$descendants = get_term_children( (int) $cat, 'category' ); | |
if ( $descendants && in_category( $descendants, $_post ) ) | |
return true; | |
} | |
return false; | |
} | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Just found this very cool snippet on WordPress Codex http://codex.wordpress.org/Function_Reference/in_category#Testing_if_a_post_is_in_a_descendant_category.