我使用此代码来使用自定义帖子类型,如常规帖子:
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\' )
) );
我想知道这两种方法有什么区别。
谢谢
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。