WP查询:如何获取特定作者的帖子或具有特定元值的帖子

时间:2017-09-01 作者:Steve

我在所有帖子中都有一个额外的自定义字段(acf用户字段),以防帖子有合著者。

所有用户都有自己的作者页面,其中显示他们的所有帖子。目前没有问题。

但我现在想要的是一个查询,在这里我可以得到作者是实际作者的所有帖子,以及他/她只是自定义字段中的合著者的所有帖子。

到目前为止,我的代码非常简单,但实际上并不起作用。我猜“relation”参数仅用于比较元查询子数组。

$args = array(
   \'post_type\'              => array( \'post\' ),
   \'posts_per_page\'         => 20,
   \'relation\'               => \'OR\',
       array(
           \'author\'                 => $author_ID,
            ),
       array(
           \'meta_key\'                => \'authorfeld\',
           \'meta_value\'              => $showme[ID], // This is the authors id from the custom field
            )
    );
谢谢你

2 个回复
最合适的回答,由SO网友:Steve 整理而成

我在这里找到了一些提示:Can i merge 2 new WP_Query($variable) 's?

因此,我创建了两个单独的查询,并将它们合并到一个新数组中:

$wp_query = new WP_Query();
$wp_query->posts = array_merge( $query1->posts, $query2->posts ); 

foreach($wp_query->posts as $post) :
setup_postdata( $post );
然后是平常的事情。

SO网友:James

很快,您确定meta\\u键的名称拼写正确吗?在你的例子中,它说的是“authorfeld”,但也许应该是“authorfield”?而且$showme[ID] 必须是$showme[\'ID\'] 除非ID 是定义的变量。

无论如何,您的$args数组都不太正确。请尝试以下示例:

// Get the posts from this author, but not this coauthor.
$author_not_coauthor = array(
   \'post_type\'              => array( \'post\' ),
   \'posts_per_page\'         => 20,
   \'author\'                 => $author_ID,
   \'meta_query\' => array(
        array(
            \'key\' => \'authorfeld\',
            \'value\' => $showme[\'ID\'],
            \'compare\' => \'NOT LIKE\',
        ),
   ),
);

// Get the posts from this coauthor, but not this author.
$coauthor_not_author = array(
   \'post_type\'              => array( \'post\' ),
   \'posts_per_page\'         => 20,
   \'author__not_in\'         => array( $author_ID ),
   \'meta_query\' => array(
        array(
            \'key\' => \'authorfeld\',
            \'value\' => $showme[\'ID\'],
        ),
   ),
);

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post