rest_ensure_response()
Проверяет и, если надо, преобразует переданные данные в объект класса WP_HTTP_Response.
Используется для стабильной работы кода при создании ответов в REST API.
Функция проверят переданные данные и если нужно превращает их в объект WP_REST_Response. Далее, этот объект позволяет использовать методы set_status(), set_headers(), set_data() и другие.
Если передан объект WP_Error или экземпляр класса WP_HTTP_Response, то они будут возвращены как есть без изменений.
Через эту функцию WP автоматически пропускает любые данные, которые возвращаются как ответ в REST API. Например когда коллбек функция register_rest_route() возвращает строку, эта строка в итоге пропускается через эту функцию.
Хуков нет.
Возвращает
WP_REST_Response|WP_Error
.
- WP_Error, если в параметре передан объект WP_Error.
- Если переданный объект уже является экземпляром класса WP_HTTP_Response, то ничего не делает и возвращает переданный объект.
- Во всех других случаях создает новый WP_REST_Response объект на основе переданных данных и возвращает его экземпляр.
Использование
rest_ensure_response( $response );
- $response(WP_Error/WP_HTTP_Response/разное) (обязательный)
- Данные ответа, которые нужно проверить и возможно превратить в объект WP_HTTP_Response.
Примеры
#1 Получение записей указанного автора
В WordPress для этой цели есть дефолтные методы, но давайте для примера создадим свой простой вариант:
// Регистрирует маршрут add_action( 'rest_api_init', function () { register_rest_route( 'myplugin/v1', '/author/(?P<id>\d+)', array( 'methods' => 'GET', 'callback' => 'my_awesome_func', ) ); } ); // Обрабатывает запрос function my_awesome_func( WP_REST_Request $request ) { $posts = get_posts( array( 'author' => (int) $request['id'], ) ); if ( empty( $posts ) ) return new WP_Error( 'no_author_posts', 'Записей не найдено', array( 'status' => 404 ) ); $response = rest_ensure_response( $posts ); $response->set_status( 201 ); $response->set_headers( [ //'CONTENT_TYPE' => 'application/x-www-form-urlencoded', //'CONTENT_LENGTH' => 105, 'X_REAL_IP' => '54.15.124.126', ] ); //$this->set_data( $data ); return $response; }
Список изменений
С версии 4.4.0 | Введена. |