rest_pre_dispatch хук-фильтр . WP 4.4.0
Позволяет переопределить ответ REST API. Изменить результат REST запроса до его базовой обработки.
Если фильтр вернет не пустое значение, то оно будет использовано для создания ответа на REST запрос. См. параметр $result.
Использование
add_filter( 'rest_pre_dispatch', 'filter_function_name_5911', 10, 3 ); function filter_function_name_5911( $result, $server, $request ){ // filter... return $result; }
- $result(смешанный)
Ответ на запрос, который заменить дефолтный ответ REST сервера. Если вернуть пустое значение
false|null|0|''
, то ничего не произойдет и REST будет работать по дефолту. Может быть возвращены следующие объекты:- WP_REST_Response
- WP_HTTP_Response
- WP_Error
- Пустота — false null 0 '' []
Это (возвращенное) значение будет пропущено через функцию rest_ensure_response().
- $server(WP_REST_Server)
- Экземпляр сервера.
- $request(WP_REST_Request)
- Текущий запрос к REST API в виде объекта WP_REST_Request.
Примеры
#1 Закроем все WP маршруты REST от публичного доступа
add_filter( 'rest_pre_dispatch', 'close_rest_api_routes', 10, 3 ); /** * Close REST API routes from public access. * * @param WP_REST_Response|WP_Error|null $result * @param WP_REST_Server $rest_server * @param WP_REST_Request $request * * @return WP_REST_Response|WP_HTTP_Response|WP_Error|null */ function close_rest_api_routes( $result, $rest_server, $request ){ // maybe authentication error already set if( ! is_null( $result ) ) return $result; // only for `/wp/v2` namespace if( // only for `/wp/v2` namespace '/wp/v2' === substr( $request->get_route(), 0, 6 ) // Administrator && ! current_user_can( 'manage_options' ) ){ return new WP_Error( 'rest_not_logged_in', 'Your capability is low.', [ 'status' => 401 ] ); } return $result; }
Список изменений
С версии 4.4.0 | Введена. |
Где вызывается хук
rest_pre_dispatch
rest_pre_dispatch
wp-includes/rest-api/class-wp-rest-server.php 972
$result = apply_filters( 'rest_pre_dispatch', null, $this, $request );
wp-includes/rest-api/class-wp-rest-server.php 1567
$result = apply_filters( 'rest_pre_dispatch', null, $this, $clean_request );
Где используется хук в ядре WordPress
wp-includes/rest-api.php 211
add_filter( 'rest_pre_dispatch', 'rest_handle_options_request', 10, 3 );