0

我想查询自定义帖子类型Person,按他们的名字和他们居住的城市名称过滤这些人。

但我不知道城市的ID,只知道它的名字。

就我而言,城市是另一种自定义帖子类型,链接到具有 ACF 关系字段的人员。

我正在使用 Wordpress JSON API V2 使用过滤器搜索人员,我使用add_meta_query_to_rest_query挂钩过滤我的自定义帖子类型Person,如果我添加一个简单的过滤器,它就可以工作:

$args['meta_query'][] = array(
    'key' => 'firstname',
    'value' => 'John',
    'compare' => '='
);

但是,如果我想过滤住在巴黎的人(这是链接的自定义帖子类型的元数据),我找不到正确的语法来做到这一点。我尝试使用city_name键。

$args['meta_query'][] = array(
    'key' => 'city_name',
    'value' => 'Paris',
    'compare' => '='
);

这是我现在找到的唯一工作方式,ID:

$args['meta_query'][] = array(
    'key' => 'city',
    'value' => '"10"',
    'compare' => 'LIKE'
);

谢谢

4

1 回答 1

1

ACF 通过其 ID 存储相关帖子,因此要匹配您的搜索,您需要使用它们(这就是它在上一个示例中起作用的原因)。您需要获取 Paris $post 对象,以便从中获取其 ID。

只需通过 slug 搜索您的城市(我认为比通过标题搜索更好的方法,因为 slug 是独一无二的)。

$post_args = array(
  'name'        => 'paris',
  'post_type'   => 'city',
  'post_status' => 'publish',
  'numberposts' => 1
);

$my_city = get_posts($args);
$my_city_id = $my_city[0]->ID;

$args['meta_query'][] = array(
    'key' => 'city',
    'value' => $my_city_id,
    'compare' => 'LIKE'
);
于 2019-07-22T15:45:50.743 回答