I added a new custom post type to my WordPress theme but it refuses to show on the homepage. I tried setting
<?php query_posts( array( 'post_type' => array('post', 'reviews') ) );?>
but it doesn’t seem to work, it just loops my normal posts. Any suggestions would be greatly helpful.
Here’s a pastie of my index if anyone wants to see it:
http://pastie.org/5120964
I would avoid the use of query_posts — it forces another database hit. There are plenty of other ways to hook in and change the query before posts are fetches. pre_get_posts
is one of them.
To display multiple post types on the home page (pages and posts in this example):
<?php
add_action('pre_get_posts', 'wpse70606_pre_posts');
/**
* Change that query! No need to return anything $q is an object passed by
* reference {@link http://php.net/manual/en/language.oop5.references.php}.
*
* @param WP_Query $q The query object.
* @return void
*/
function wpse70606_pre_posts($q)
{
// bail if it's the admin, not the main query or isn't the (posts) page.
if(is_admin() || !$q->is_main_query() || !is_home())
return;
// whatever type(s) you want.
$q->set('post_type', array('post', 'page'));
}
This would go in your themes’s functions.php
file or in a plugin.