查询自定义邮寄类型的不同方式?

时间:2014-04-08 作者:Jaeeun Lee

我使用此代码来使用自定义帖子类型,如常规帖子:

add_action( \'pre_get_posts\', \'add_my_post_types_to_query\' );

function add_my_post_types_to_query( $query ) {
if ( is_home() && $query->is_main_query() )
    $query->set( \'post_type\', array( \'post\', \'miss_behave\', \'emily_davies\',\'gemma_patel\',\'poppy_smythe\' ) );
return $query;
}
但我也看到了显示自定义帖子类型的代码:

$query = new WP_Query( array(
\'post_type\' => array( \'post\', \'page\', \'movie\', \'book\' )
) );
我想知道这两种方法有什么区别。

谢谢

2 个回复
最合适的回答,由SO网友:Chris_O 整理而成

第一种方法是,使用pre\\u get\\u posts操作将在加载页面之前修改主查询。第二种方法将创建一个新查询。更改主查询比创建新查询要好得多。

SO网友:Brad Dalton

pre_get_posts

pre_get_posts 用于更改帖子的主查询,以便is_home() 条件标记将起作用。

您还可以使用is\\u post\\u type\\u archive()条件标记更改对CPT归档的查询,如下所示。

add_action( \'pre_get_posts\', \'limit_cpt_items\' );
function limit_cpt_items( $query ) {

if( $query->is_main_query() && !is_admin() && is_post_type_archive( \'your-cpt\' ) ) {
    $query->set( \'posts_per_page\', \'24\' );
    }

}

WP_Query

您可以对页面请求使用新的WP\\U查询,包括以下页面的条件标记is_page(), is_page_template()is_front_page() 它不适用于在WP\\u查询之前运行的pre\\u get\\u posts。

结束