WP_Query和meta查询,其中meta_value不唯一

时间:2018-11-06 11:21:16

标签: wordpress meta-query

我有一个CPT,我要在其中添加post meta,并将unique标志设置为false。因此,在postmeta表中,我将3条记录分配给同一条帖子,具有相同的meta_key但具有不同的meta_value,如下所示:

| post_id    | meta_key       | meta_value   |
|:-----------|---------------:|:------------:|
| 1          |exclude_user_id |     1        |
| 1          |exclude_user_id |     2        |
| 1          |exclude_user_id |     3        |

我想进行WP_Query以确保仅获取current_user_id()不在meta_value之一中的帖子。因此,ID为3的用户将看不到ID为1的帖子。

我知道我可以使用自定义MySQL语句来执行此操作,或者获取所有帖子,并在循环时为每个帖子获取postmeta。但是我想知道是否可以直接使用WP_Query来做到这一点。目前,我的WP_Query如下,即使我以ID 3的用户身份登录,它也会返回ID 1的帖子。

$posts = new WP_Query([
        'post_type'      => 'post',
        'post_status'    => 'publish',
        'order'          => 'DESC',
        'orderby'        => 'DATE',
        'meta_query'     => [
            [
                'key'     => 'exclude_user_id',
                'compare' => 'NOT IN',
                'value'   => get_current_user_id()
            ]
        ]
    ]);

在compare属性设置为NOT IN的情况下,它仍在获取meta_value为1或2的postmeta表中的其他行,因此仍会获取所有帖子。

0 个答案:

没有答案