如何通过WP REST API按ACF地点字段过滤Properties自定义文章类型?
解决WP REST API按ACF地点字段过滤自定义文章类型的问题
默认WP REST API不支持直接通过acf.xxx格式的参数过滤自定义字段,需要通过代码扩展API的查询能力,具体步骤如下:
1. 在WordPress主题的functions.php中添加过滤逻辑
添加以下代码,注册自定义的location查询参数,并修改文章查询规则来匹配ACF字段:
// 为Properties自定义文章类型扩展REST API过滤参数 add_filter('rest_properties_query', 'filter_properties_by_acf_location', 10, 2); function filter_properties_by_acf_location($args, $request) { // 检测请求中是否携带location参数 if (!empty($request['location'])) { $target_location = sanitize_text_field($request['location']); // 添加meta查询,匹配ACF组字段address_map下的location子字段 $args['meta_query'][] = [ 'key' => 'address_map_location', // ACF组字段+子字段的存储键格式,规则为{组字段名}_{子字段名} 'value' => $target_location, 'compare' => '=' // 精准匹配,如需模糊匹配可改为'LIKE' ]; } return $args; }
2. 前端修改请求URL
将原来的请求URL替换为:
domain/wp-json/wp/v2/properties?location=new-jersey
关键说明
- ACF组字段的子字段在数据库中以
{组字段名}_{子字段名}作为meta_key存储,比如address_map组下的location子字段对应address_map_location - 如果需要模糊匹配(比如匹配包含"new-jersey"的地点),只需将
compare的值改为LIKE - 确保你的Properties自定义文章类型已经开启了REST API支持(注册时设置
show_in_rest => true)
内容的提问来源于stack exchange,提问作者nitin sharma
相关产品推荐
相关产品推荐

