请注意,此处:$posts = new WP_Query
, 这个$posts
不是一个帖子数组,而是一个对象。因此,与其做foreach
和setup_postdata()
, 你应该使用while ( $posts->have_posts() ) ...
方法来显示循环。但我猜你最初用的是$posts = get_posts()
那里
我是说,我可以输入任何不存在的meta_key
或meta_value
它仍然显示所有用户帖子。
所以我想我在代码的某个地方犯了一个错误。
不,你没有,问题是get_users()
.
只是当您使用一个不存在的元键/值时,这意味着get_users()
将返回一个空数组,然后将其传递给WP_Query
通过author__in
参数,当它是空数组时WP_Query
不会将查询仅限于某些帖子作者,因此\'author__in\' => array()
实际上与设置该参数相同,因此,未设置该参数时得到的结果与设置为空数组时得到的结果相同。
因此,您要做的是运行new WP_Query
仅当$user_ids
不是空的,如下所示:
if ( ! empty( $user_ids ) ) {
$query = new WP_Query([
\'author__in\' => $user_ids,
// ... your other args.
]);
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
the_title( \'<h3>\', \'</h3>\' );
}
wp_reset_postdata();
}
}