为什么WordPress显示来自空post__in数组的查询结果?

2022-08-30 22:03:20

我有以下论点:WP_Query

$posts = new WP_Query(array(
        'post__in' => $postids,
        'meta_key' =>'ratings_average',
        'orderby'=>'meta_value_num',
        'order' =>'DESC',
    ));

$postids是从另一个 中检索的 id 数组。我在这里的问题是,即使$postids是空的,Wordpress循环也会显示帖子。我该如何管理它不应该显示任何帖子,如果$postids是空的。WP_Query


答案 1

这并不能直接解决问题,但我不明白为什么这不起作用。post__in

if(!empty($postids)){
    $posts = new WP_Query(array(
        'post__in' => $postids,
        'meta_key' =>'ratings_average',
        'orderby'=>'meta_value_num',
        'order' =>'DESC',
    ));
} else {
    //Do something else or nothing at all..
}

如您所见,仅当其中具有值时,调用才会发生。如果没有,则不会调用,并且循环永远不会发生,就像您的查询返回0个帖子一样。WP_Query$postidsWP_Query


答案 2

如前所述,wp开发人员不想解决这个问题。话虽如此,您可以传递一个无效ID的非空数组,如下所示:

if(empty($postids)) {
    $postids = ['issue#28099'];
}

$posts = new WP_Query(array(
    'post__in' => $postids,
    'meta_key' =>'ratings_average',
    'orderby'=>'meta_value_num',
    'order' =>'DESC',
));

你说的坏做法?是的,我不确定从谁的角度来看...


推荐