Checking for A Specific Post Type in WordPress
Conditional Tags are one of my all-time favorite tools to use when developing a WordPress theme. It’s an intelligent use of programming logic that allows even non-coders to grasp the basics and, in turn, create complex and functional WordPress themes. With the advent of custom post types, a method was needed to check for the presence of a certain post type, and display the data appropriately. There’s not a true conditional tag, in the sense you fill in a parameter of a function and it works. Instead, you have to use a separate function value and test for a match. In English, here’s how to check for a specific post type:
[code]
<?php if ( ‘book’ == get_post_type() ) {
//code goes here for book-type content
} ?>
[/code]
If you need to display an either/or content string, the code doesn’t change much:
[code]
<?php if ( ‘book’ == get_post_type() ) {
//code goes here for book-type content
} else {
//code goes here for all non book-type content
} ?>
[/code]
A good example of this would be my portfolio page. If both the portfolio post type and my normal blog posts were sharing a template, but I needed to add a Pinterest Button to my portfolio, but not to my blog posts, it may look something like this:
[code]
<?php if ( ‘portfolio’ == get_post_type() ) { ?>
<a href=”http://pinterest.com/pin/create/button/?url=<?php echo urlencode(get_permalink($post->ID)); ?>&media=<?php echo $pinterestimage[0]; ?>&description=<?php the_title(); ?>” count-layout=”horizontal”>Pin It</a>
<?php } ?>
[/code]
The only problem is there’s no way to use the bang symbol in front (like a typical post type) to show that it is NOT the value specified. Instead, we have to change the operator from “Equals” to “Does Not Equal”, like so:
[code]
<?php if ( ‘book’ != get_post_type() ) {
//code goes here for non book-type content
} ?>
[/code]
So, more than a few snippits to get you showcasing your post-type specific data quickly and easily.