Inspecting WP_Rest_Request

时间:2022-01-27 作者:MikeiLL

我正在实现一个GET的回调Wp Rest request, 接收WP_Rest_Request 对象

function create_on_demand_post( \\WP_REST_Request $request ) {
    $params = $request->get_json_params();
    // etc...
}
class methods 它检索请求数据,但我想知道是否有办法像访问数组或对象一样访问此ArrayAccess实现中的数据:

WP_REST_Request
    method:"POST"
    params:array(6)
    headers:array(8)
    body:"{"title": "From Python", "status": "publish", "content": "This is a post created using rest API", etc...}"
    route:"/my-plugin/v1/posts"
    attributes:array(7)
    parsed_json:true
    parsed_body:false
我试过了$request->body, 不评估和$request[\'body\'], 以及$request[\'body\'][0], 两者都返回null.

您是否只能使用提供的方法访问属性?

1 个回复
最合适的回答,由SO网友:MikeiLL 整理而成

如上文Sally CJ的评论所述Wp Codebase, 这些属性受保护,因此只能通过多个getset 类公开的方法:

/**
  * Sets the header on request.
  *
  * @since 4.4.0
  *
  * @param string $key   Header name.
  * @param string $value Header value, or list of values.
  */
public function set_header( $key, $value ) {
    $key   = $this->canonicalize_header_name( $key );
    $value = (array) $value;

    $this->headers[ $key ] = $value;
}

// etc...
如果需要直接访问它们,可以扩展该类:

class MY_WP_REST_Request extends WP_REST_Request {

    public $params;
    // etc...
}
虽然在我的例子中,使用提供的访问方法证明是很好的。