kisabelle
3/11/2014 - 9:04 PM

Check if Wordpress post is in Custom Taxonomy

Check if Wordpress post is in Custom Taxonomy

<?php

/* Function */

/**
* 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;
}


/* Usage */

/* 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)) {}



// Source: http://alex.leonard.ie/2011/06/30/wordpress-check-if-post-is-in-custom-taxonomy/

?>