合并两个查询并删除重复项

时间:2017-06-01 作者:hello34670

我想将两个查询合并在一起并删除重复的查询。我让它单独工作。现在我把它一起工作了,但结果没有混合,重复项也没有删除。所以我得到了第一个查询结果,然后是第二个查询结果。。。

    $fav_author_list = get_user_option( \'favorite-authors\', fav_authors_get_user_id() );
    $fav_categorie_list = get_user_option( \'favorite-categories\', fav_categories_get_user_id() );

    $rm_blog_args = array(
        \'posts_per_page\' => -1,
        \'author__in\'=> $fav_author_list,
        \'post_type\' => \'post\'
    );
    $rm_blog = new WP_Query($rm_blog_args);

    $fb_args = array(
        \'posts_per_page\' => -1,
        \'category__in\'=> $fav_categorie_list,
        \'post_type\' => \'post\'
    );
    $fb = new WP_Query($fb_args);

    // Final Query
    $final_query = new WP_Query();

    // Merging queries
    $final_query->posts = array_merge( $rm_blog->posts, $fb->posts);
    // Recount
    echo $final_query->post_count = count( $final_query->posts );


    // Remove duplicate post IDs
    $post_ids = array();
    foreach( $final_query->posts as $item ) {
        $post_ids[] = $item->ID;
    }
    $unique_posts = array_unique($post_ids);

    if($final_query->have_posts()) : while ( $final_query->have_posts() ) : $final_query->the_post();

2 个回复
SO网友:Tyler Johnson

为什么不这样做呢?

$fav_author_list = get_user_option( \'favorite-authors\', fav_authors_get_user_id() );
$fav_category_list = get_user_option( \'favorite-categories\', fav_categories_get_user_id() );

if(!empty($fav_author_list) && !empty($fav_category_list)) {
    $rm_args = array(
        \'posts_per_page\' => -1,
        \'author__in\'=> $fav_author_list,
        \'category__in\'=> $fav_category_list,
        \'post_type\' => \'post\'
    );
} elseif(!empty($fav_author_list) && empty($fav_category_list)) {
    $rm_args = array(
        \'posts_per_page\' => -1,
        \'author__in\'=> $fav_author_list,
        \'post_type\' => \'post\'
    );
} elseif(empty($fav_author_list) && !empty($fav_category_list)) {
    $rm_args = array(
        \'posts_per_page\' => -1,
        \'category__in\'=> $fav_category_list,
        \'post_type\' => \'post\'
    );
} else {
    $rm_args = \'\'; // No args, because nothing to display.
}

if(!empty($rm_args)) {
    $rm_blog = new WP_Query($rm_args);
    if($rm_blog->have_posts()) : while ($rm_blog->have_posts()) : $rm_blog->the_post();
    // Stuff here.
}

SO网友:Abhik

您的设置没有任何意义,您正在查询,但没有使用任何查询。您的参数可以很容易地合并并在一个查询中使用,除非您必须对第一个查询执行某些操作。

无论如何,您可以将来自第一个查询的post ID存储在一个数组中,然后利用该参数post__not_in 参数删除第一个查询返回的帖子。

结束

相关推荐

$QUERY->HAVE_POST()出错

我是wordpress新手,在这里,我正在获取post type=Organization的缩略图,请检查我的$args数组是否有问题,我在这里应用分页,但wp查询不起作用,这是我的代码,请给我一个解决方案。$paged = ( get_query_var( \'paged\' ) ) ? absint( get_query_var( \'paged\' ) ) : 1; $args = array( \'posts_per_page\' => 5,&#