You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发Gutenberg块调用WordPress REST API POST返回空对象问题

问题原因

  • 自定义REST接口回调中拿到的$data参数是WP_REST_Request类的实例,不是前端传递的参数本身。WordPress序列化响应数据时会过滤该实例的非公开属性,直接返回该对象就会导致前端拿到空内容。
  • 代码没有从请求实例中提取实际传递的参数内容,直接将请求实例作为响应返回。

修复方案

1. 调整PHP端回调函数

修改回调逻辑,先从请求实例中提取参数再返回,示例代码如下:

function name_image_sequence_unzip( WP_REST_Request $request ) {
    // 提取所有请求参数
    $params = $request->get_params();
    // 也可单独提取指定参数:$zip_id = $request->get_param( 'id' );
    // 后续实现获取附件URL、创建目录、解压zip的逻辑都基于提取的参数处理
    return rest_ensure_response( $params );
}

修改后前端即可正常拿到{id: 'test test test'}的返回内容。

2. 可选优化:增加参数校验(推荐)

注册路由时补充参数校验规则,避免非法请求,正式环境也建议修改权限校验逻辑,不要直接用__return_true:

add_action( 'rest_api_init', function () {
  register_rest_route( 'name-support/v1', '/zipped/', 
      [
        'methods' => WP_REST_Server::EDITABLE,
        'callback' => 'name_image_sequence_unzip',
        // 正式环境替换为实际权限校验逻辑,防止未授权访问
        'permission_callback' => function() {
            return current_user_can( 'upload_files' );
        },
        'args' => [
            'id' => [
                'required' => true,
                'validate_callback' => function( $param ) {
                    return is_numeric( $param ) || is_string( $param );
                }
            ]
        ]
      ] 
  );
});

内容的提问来源于stack exchange,提问作者Marin Carroll

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 22:27:02