WP_REST_Controller::get_endpoint_args_for_item_schema PHP Method

get_endpoint_args_for_item_schema() public method

Get an array of endpoint arguments from the item schema for the controller.
public get_endpoint_args_for_item_schema ( string $method = WP_REST_Server::CREATABLE ) : array
$method string HTTP method of the request. The arguments for `CREATABLE` requests are checked for required values and may fall-back to a given default, this is not done on `EDITABLE` requests. Default is WP_REST_Server::CREATABLE.
return array $endpoint_args
    public function get_endpoint_args_for_item_schema($method = WP_REST_Server::CREATABLE)
    {
        $schema = $this->get_item_schema();
        $schema_properties = !empty($schema['properties']) ? $schema['properties'] : array();
        $endpoint_args = array();
        foreach ($schema_properties as $field_id => $params) {
            // Arguments specified as `readonly` are not allowed to be set.
            if (!empty($params['readonly'])) {
                continue;
            }
            $endpoint_args[$field_id] = array('validate_callback' => 'rest_validate_request_arg', 'sanitize_callback' => 'rest_sanitize_request_arg');
            if (isset($params['description'])) {
                $endpoint_args[$field_id]['description'] = $params['description'];
            }
            if (WP_REST_Server::CREATABLE === $method && isset($params['default'])) {
                $endpoint_args[$field_id]['default'] = $params['default'];
            }
            if (WP_REST_Server::CREATABLE === $method && !empty($params['required'])) {
                $endpoint_args[$field_id]['required'] = true;
            }
            foreach (array('type', 'format', 'enum') as $schema_prop) {
                if (isset($params[$schema_prop])) {
                    $endpoint_args[$field_id][$schema_prop] = $params[$schema_prop];
                }
            }
            // Merge in any options provided by the schema property.
            if (isset($params['arg_options'])) {
                // Only use required / default from arg_options on CREATABLE endpoints.
                if (WP_REST_Server::CREATABLE !== $method) {
                    $params['arg_options'] = array_diff_key($params['arg_options'], array('required' => '', 'default' => ''));
                }
                $endpoint_args[$field_id] = array_merge($endpoint_args[$field_id], $params['arg_options']);
            }
        }
        return $endpoint_args;
    }