如何通过查询字符串的unique_id参数查询fs_park自定义文章类型?
通过unique_id查询WordPress自定义文章类型fs_park
你的现有代码仅获取了unique_id参数,还需要添加查询逻辑来定位对应的fs_park自定义文章。以下是完整的实现方案:
完整的REST请求处理函数
function query_fs_park_by_unique_id(WP_REST_Request $request) { // 获取URL中的unique_id参数 $unique_id = $request->get_param('unique_id'); // 参数校验,避免空值查询 if (empty($unique_id)) { return new WP_Error('missing_param', 'unique_id参数不能为空', array('status' => 400)); } // 使用WP_Query查询对应文章 $query = new WP_Query(array( 'post_type' => 'fs_park', // 指定自定义文章类型 'post_status' => 'publish', // 只查询已发布的文章 'meta_key' => 'unique_id', // 对应存储unique_id的*自定义字段*名 'meta_value' => $unique_id, // 匹配传入的unique_id值 'posts_per_page' => 1, // 只返回一篇结果 'no_found_rows' => true, // 关闭分页计数,提升查询效率 )); // 处理查询结果 if ($query->have_posts()) { $post = $query->posts[0]; // 可根据需求返回完整文章数据或自定义字段 return rest_prepare_post($post, $request); } else { return new WP_Error('no_post_found', '未找到对应unique_id的fs_park文章', array('status' => 404)); } }
注册REST路由(如果尚未注册)
如果你的函数还没绑定到REST路由,需要添加以下代码来注册:
add_action('rest_api_init', function () { register_rest_route( 'your-namespace/v1', // 自定义命名空间,可修改 '/fs-park/', // 路由路径,可修改 array( 'methods' => WP_REST_Server::READABLE, // 允许GET请求 'callback' => 'query_fs_park_by_unique_id', ) ); });
关键说明
- 确保
unique_id是存储在文章的*自定义字段(post meta)*中,代码中的meta_key要和实际存储的字段名一致。 rest_prepare_post函数会将文章数据格式化为符合REST API规范的响应结构,包含文章的各类信息。- 添加了参数校验和错误处理,返回标准的HTTP状态码,方便前端处理。
内容的提问来源于stack exchange,提问作者spreaderman
相关产品推荐
相关产品推荐

