Showing custom post types on your home/blog page
In the last few days, I’ve shown a few people a screenshot of something I’ve been working on for this site. The screenshot is of a home page displaying custom post types and not just the post
post type. After numerous requests for the code to do this, I figured it’d be much easier to share it here.
WordPress version 3.0 will make creating custom post types extremely simple. But, the techniques I’ll point out in this tutorial can be used with previous versions of WordPress.
Changing the post type on the home page
By default, WordPress shows the post
post type on your home page. Let’s suppose we want to show several post types in addition to posts:
page
(yes, regular pages)album
movie
quote
To add these, open your theme’s functions.php
file and paste this PHP code into it:
add_filter( 'pre_get_posts', 'my_get_posts' );
function my_get_posts( $query ) {
if ( is_home() && $query->is_main_query() )
$query->set( 'post_type', array( 'post', 'page', 'album', 'movie', 'quote' ) );
return $query;
}
That’s all there is to it.
Showing the post types in your feed
Realizing that many of you might want to also add these post types to your feed to match your blog, a small change in the code is required. All you need to do is change this line:
if ( is_home() && $query->is_main_query() )
We’ll use the is_feed()
conditional tag:
if ( ( is_home() && $query->is_main_query() ) || is_feed() )
Now, you can have custom post types in your regular blog post rotation and your feed. Enjoy and look for more custom post type tutorials soon.