具有多种帖子类型的WordPress循环的自定义过滤器

时间:2018-04-25 11:13:26

标签: php wordpress

我正在构建一个WordPress网站,我想在博客索引中显示一些页面和帖子。棘手的条件是,WP_Query应该返回所有“帖子”,但是当涉及到“页面”时,它应该仅获取具有特定父ID的页面,例如父母ID为1,2,3等。

我想知道是否可以在一个WP_Query中完成此操作,同时保留WordPress循环和have_posts()之类的函数,像previous_posts_link()之类的分页函数等。这可能吗? ?有人能指出我正确的方向吗?如果需要更多信息,请通知我,或者如果有任何不清楚的地方,请告诉我。

感谢。

1 个答案:

答案 0 :(得分:0)

使用插件找到解决方案并进行更多研究 - wp-combine-queries

示例代码如下

//------------------------
// Children pages query #1
//------------------------
$pages = [
    'post_type'      => 'page',
    'post_parent__in' => [
        1944,1962,1343,1377,909,952 // Post id's of parents
     ],
    'posts_per_page' => -1
];

//-------------------
// All Posts Query #2
//-------------------
$posts = [
   'post_type'      => 'post',
   'posts_per_page' => -1
];

//---------------------------
// Combined queries #1 + #2:
//---------------------------
$args = [
    'paged'               => get_query_var( 'paged', 1 ),
    'combined_query' => [        
        'args'   => [ $pages, $posts ],
        'union'  => 'UNION',
    ]
];

//---------
// Output:
//---------
$posts_to_display = new WP_Query( $args );