public sanitize_post_statuses ( string | array $statuses, WP_REST_Request $request, string $parameter ) : array | WP_Error | ||
$statuses | string | array | One or more post statuses. |
$request | WP_REST_Request | Full details about the request. |
$parameter | string | Additional parameter to pass to validation. |
Результат | array | WP_Error | A list of valid statuses, otherwise WP_Error object. |
public function sanitize_post_statuses($statuses, $request, $parameter)
{
$statuses = wp_parse_slug_list($statuses);
// The default status is different in WP_REST_Attachments_Controller
$attributes = $request->get_attributes();
$default_status = $attributes['args']['status']['default'];
foreach ($statuses as $status) {
if ($status === $default_status) {
continue;
}
$post_type_obj = get_post_type_object($this->post_type);
if (current_user_can($post_type_obj->cap->edit_posts)) {
$result = rest_validate_request_arg($status, $request, $parameter);
if (is_wp_error($result)) {
return $result;
}
} else {
return new WP_Error('rest_forbidden_status', __('Status is forbidden.'), array('status' => rest_authorization_required_code()));
}
}
return $statuses;
}