在我的档案中有一个tipical循环
if ( have_posts() ) :
/* Start the Loop */
while ( have_posts() ) : the_post();
get_template_part( \'template-parts/content\', get_post_format() );
endwhile;
wp_reset_postdata();
else :
get_template_part( \'template-parts/content\', \'none\' );
endif;
在我的侧边栏中,我有一个插件小部件,它也调用新的wp\\u查询来显示最近的帖子。
$query = new WP_Query(
apply_filters(
\'widget_posts_args\',
array(
\'posts_per_page\' => $number,
\'no_found_rows\' => true,
\'post_status\' => \'publish\',
\'ignore_sticky_posts\' => true
)
)
);
到目前为止还不错。但是,我需要为我的类别添加过滤器以显示和自定义帖子类型:
function mvp_add_custom_types( $query ) {
if( is_category() || is_tag() || is_date() && empty( $query->query_vars[\'suppress_filters\'] ) ) {
$query->set( \'post_type\', array(
\'post\', \'nav_menu_item\', \'mvp_projects\'
));
return $query;
}
}
add_filter( \'pre_get_posts\', \'mvp_add_custom_types\' );
这突然打破了另一个疑问。如何使用这两个查询,并将过滤器仅应用于与主题相关的查询(另一个查询来自插件)?
最合适的回答,由SO网友:worldwildwebdev 整理而成
通过在括号中添加额外的contional语句和wrapped OR语句,我对其进行了排序:
function mvp_add_custom_types( $query ) {
if( ( is_category() || is_tag() || is_date() ) && $query->is_main_query() && empty( $query->query_vars[\'suppress_filters\'] ) ) {
$query->set( \'post_type\', array(
\'post\', \'nav_menu_item\', \'mvp_projects\'
));
return $query;
}
}
add_filter( \'pre_get_posts\', \'mvp_add_custom_types\' );