是否从一组帖子中排除当前帖子?

时间:2016-06-21 作者:bpy

我试图从数组中排除当前帖子,我知道codex 说不可能合并post__inpost__not_in 在同一查询中。。。

但在wordpress中,一切(嗯,几乎……)是可能的,我知道这一定是从我的帖子数组中排除当前帖子的一种方法。

如果不能一起使用,如何从数组中排除当前帖子?欢迎任何提示。

这是我当前的查询:

$this_post = $post->ID;
$args = array(\'post__in\' => array(17,111,108,158), \'post__not_in\' => array($this_post));
$posts = new WP_Query($args);

1 个回复
最合适的回答,由SO网友:Scott Nelle 整理而成

使用array_diff() 从其他帖子ID数组中删除当前帖子ID。

$include = array( 17, 111, 108, 158);
$include = array_diff( $include, array( $post->ID ) );
$args = array( \'post__in\' => $include );
$posts = new WP_Query( $args );
编辑以包含由引发的点Pieter Goosen--如果$include 不是ID的硬编码数组,而是来自数据库的东西,您应该验证它不是empty() 在执行查询之前。将空数组传递给\'post__in\' 将得到一个未经筛选的帖子列表,而不是像您所期望的那样不返回帖子。