1

有一种称为“事件”的自定义帖子类型和另一种称为“场地”的帖子类型。帖子类型“events”具有“venues”的关系字段,以便用户在设置事件时可以选择场所。

“venue”有一个自定义文本字段“city”。

我现在需要搜索特定城市中的所有事件。使用 meta_query 它不起作用,结果总是空的:

$query->set('meta_query', array(
    array(
        'key'       => 'city',
        'value'     => 'New York',
        'compare'   => 'LIKE', 
    ),
));

我怎样才能找到连接场地所在城市等于“纽约”的所有活动?非常感谢!

4

1 回答 1

2

首先从所需的城市获取您的场地......

$args = array(
    'posts_per_page'    => -1,
    'fields' => 'ids',
    'post_type'        => 'venues',
    'meta_query'    => array(
       array(
        'key'       => 'city',
        'value'     => '"New York"',
        'compare'   => 'LIKE', 
       )
    ),
);
$venues_ids = get_posts($args);

然后从匹配的场地查询您的活动

    $args = array(
        'posts_per_page'    => -1,
        'post_type'        => 'events',
        'meta_query'    => array(
           array(
            'key'       => 'venues',
            'value'     => $venues_ids,
            'compare'   => 'IN', 
           )
        ),
    );
    $events = get_posts($args);
于 2020-02-07T00:05:17.263 回答