Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress 通过ACF关系字段链接的另一个自定义帖子类型值查询自定义帖子类型_Wordpress_Advanced Custom Fields_Wordpress Rest Api_Meta Query - Fatal编程技术网

Wordpress 通过ACF关系字段链接的另一个自定义帖子类型值查询自定义帖子类型

Wordpress 通过ACF关系字段链接的另一个自定义帖子类型值查询自定义帖子类型,wordpress,advanced-custom-fields,wordpress-rest-api,meta-query,Wordpress,Advanced Custom Fields,Wordpress Rest Api,Meta Query,我想查询一个自定义帖子类型人,根据他们的名字和他们居住的城市的名字过滤这些人 但是我不知道城市的ID,只知道它的名字 在我的例子中,城市是另一个自定义帖子类型,通过ACF关系字段链接到个人 我使用Wordpress JSON API V2使用过滤器搜索人员,我使用add_meta_query_to_rest_query钩子过滤我的自定义帖子类型Person,如果我添加一个简单的过滤器,它会起作用: $args['meta_query'][]=数组( 'key'=>'firstname', “值”

我想查询一个自定义帖子类型,根据他们的名字和他们居住的城市的名字过滤这些人

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

在我的例子中,城市是另一个自定义帖子类型,通过ACF关系字段链接到个人

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

$args['meta_query'][]=数组(
'key'=>'firstname',
“值”=>“约翰”,
'比较'=>'='
);
但是如果我想过滤住在巴黎的人(这是链接的自定义帖子类型的一个元),我找不到正确的语法。 我试着用城市名称键

$args['meta_query'][]=数组(
'键'=>'城市名称',
'值'=>'巴黎',
'比较'=>'='
);
以下是我目前找到的唯一工作方式,ID为:

$args['meta_query'][]=数组(
“键”=>“城市”,
'值'=>'“10”',
'比较'=>'类似'
);

谢谢

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

只需用蛞蝓搜索你的城市(我认为这是一种比用title搜索更好的方法,因为蛞蝓是独一无二的)


谢谢你的解决方案,我以后一定会用它。我发现用LIKE操作符代替a=,有点奇怪。这是因为relationship字段使用以下语法存储两篇文章之间的链接:
a:1:{i:0;s:2:40”}
它不是一个整数的真正链接。我使用了post对象链接而不是关系1,现在数据库中存储的值是一个整数。我现在可以使用=或IN运算符,这比LIKE运算符快得多
$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'
);