rest_pre_dispatch
Дозволяє перевизначити відповідь REST API. Змінити результат запиту REST до його базової обробки.
Якщо фільтр поверне не порожнє значення , воно буде використано для створення відповіді на REST запит. параметр $result .
Використання
add_filter( 'rest_pre_dispatch', 'wp_kama_rest_pre_dispatch_filter', 10, 3); /** * Function for `rest_pre_dispatch` filter-hook. * * @param mixed $result Response to replace the requested version with. Може бути будь-який звичайний кінець може відновити, або null для того, щоб запобігти потребі. * @param WP_REST_Server $server Server instance. * @param WP_REST_Request $request Request використовується для створення відповіді. * * @return mixed */ function wp_kama_rest_pre_dispatch_filter( $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