Фильтр rest_url_prefix
позволяет изменить стандартный префикс для маршрутов (эндпоинтов) REST API. По умолчанию префикс для всех маршрутов REST API в WordPress — это wp-json
. Однако, с помощью этого фильтра можно установить любой другой префикс, например, api
, для улучшения структуры URL или для скрытия API.
apply_filters( 'rest_url_prefix', string $prefix );
- $prefix — строка, которая указывает текущий префикс для всех маршрутов REST API. По умолчанию это
wp-json
.
Пример 1: Изменение префикса с wp-json
на api
Этот пример демонстрирует, как изменить стандартный префикс для маршрутов REST API с wp-json
на api
.
add_filter( 'rest_url_prefix', 'change_rest_api_prefix' );
function change_rest_api_prefix( $slug ) {
return 'api';
}
После применения этого кода все маршруты REST API будут начинаться с /api/
вместо стандартного /wp-json/
. Например, эндпоинт для получения списка постов будет выглядеть так:
http://example.com/api/wp/v2/posts
Пример 2: Добавление нового префикса в черный список
Когда вы меняете префикс для маршрутов REST API, важно убедиться, что новый префикс не является зарезервированным словом для вашей установки WordPress. В следующем примере добавляется новый префикс в черный список, чтобы избежать возможных конфликтов с другими маршрутами:
add_filter( 'rest_url_prefix', 'change_rest_api_prefix' );
function change_rest_api_prefix( $slug ) {
return 'api';
}
add_filter( 'subdirectory_reserved_names', function( $names ) {
$names[] = 'api';
return $names;
} );
Теперь префикс api
будет изменен, а его добавление в черный список предотвратит случайные конфликты с другими маршрутами. Для того чтобы изменения вступили в силу, нужно обновить правила перезаписи:
- Перейдите в админку WordPress в раздел «Настройки» > «Постоянные ссылки».
- Просто нажмите кнопку «Сохранить изменения», чтобы обновить перезапись правил.
Пример 3: Создание собственного маршрута с измененным префиксом
Теперь, когда мы изменили префикс на api
, можно зарегистрировать собственный маршрут для работы с этим префиксом. Например, создание нового маршрута для получения списка всех страниц:
add_action( 'rest_api_init', function() {
register_rest_route( 'api/v1', '/pages', array(
'methods' => 'GET',
'callback' => 'get_all_pages',
) );
} );
function get_all_pages() {
$pages = get_pages();
return new WP_REST_Response( $pages, 200 );
}
Теперь доступ к данным страниц будет через новый маршрут с префиксом api
:
http://example.com/api/v1/pages
Заключение
Фильтр rest_url_prefix
в WordPress дает возможность изменить стандартный префикс для всех маршрутов REST API, что полезно для улучшения структуры URL или скрытия REST API от посторонних глаз. После изменения префикса важно обновить правила перезаписи, чтобы изменения вступили в силу.