See this page for the original source:
http://alex.leonard.ie/2011/06/30/wordpress-check-if-post-is-in-custom-taxonomy/
As of WP 3.2 – there’s no core conditional function for checking whether a post belongs to a taxonomy term. A bit of searching around found this WordPress Support forum post by Justin Tadlock explaining how do check against a specific taxonomy. I’ve expanded this function a little bit so that it can be used generically.
/** * Conditional function to check if post belongs to term in a custom taxonomy. * * @param tax string taxonomy to which the term belons * @param term int|string|array attributes of shortcode * @param _post int post id to be checked * @return BOOL True if term is matched, false otherwise */ function pa_in_taxonomy($tax, $term, $_post = NULL) { // if neither tax nor term are specified, return false if ( !$tax || !$term ) { return FALSE; } // if post parameter is given, get it, otherwise use $GLOBALS to get post if ( $_post ) { $_post = get_post( $_post ); } else { $_post =& $GLOBALS['post']; } // if no post return false if ( !$_post ) { return FALSE; } // check whether post matches term belongin to tax $return = is_object_in_term( $_post->ID, $tax, $term ); // if error returned, then return false if ( is_wp_error( $return ) ) { return FALSE; } return $return; }
Let’s say you’ve created a custom post type called “Films” which has a custom taxonomy of “Genres” and you want to know if the current post is in the “western” genre, you would do as follows:
if (pa_in_taxonomy('genres', 'western')) { echo "Western films are great"; } else { // do something else }
Note I’m using the tax/term slug, but the is_object_in_term function in use will accept term id, slug, or array of either, so you could do:
if (pa_in_taxonomy('genres', array('western', 'drama', 'comedy'))) {} // or if (pa_in_taxonomy('genres', array(1, 2, 3)) {}
Revisions
There are no revisions for this post.
No comments yet.