我试图从数组中排除当前帖子,我知道codex 说不可能合并post__in 和post__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);
最合适的回答,由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\'
将得到一个未经筛选的帖子列表,而不是像您所期望的那样不返回帖子。