存档页面上的多个wp_Query

时间:2017-12-17 作者:worldwildwebdev

在我的档案中有一个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\' );
这突然打破了另一个疑问。如何使用这两个查询,并将过滤器仅应用于与主题相关的查询(另一个查询来自插件)?

2 个回复
最合适的回答,由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\' );

SO网友:WhirledPress

我不完全确定,但看起来您的筛选器中需要另一个条件。现在,它会过滤所有查找类别、标记或日期的内容,这些内容没有为帖子类型设置nav\\u menu\\u项、mvp\\u projecvts查询变量。也许您可以添加一个过滤器来检查是否设置了某个变量,并且只在该变量存在时进行过滤。

$archive\\u ok=真;然后在过滤器中:if($archive\\u ok){do stuff}$archive\\u ok=false;

这是一个笨拙的解决方案,我相信有更好的答案,但在紧要关头可能会奏效。

结束

相关推荐

在非文档挂接上调用Apply_Filters

我一直在努力学习如何编写插件,我认为最好的方法是查看其他插件。我在看这一行和第一行/** * Plugin Name: Media Library Categories * Plugin URI: http://wordpress.org/plugins/wp-media-library-categories/ * Description: Adds the ability to use categories in the media library. * Vers