## Функция GET_REST_URL() │ WP 4.4.0
Функция GET_REST_URL() возвращает URL для REST-эндпойнта на сайте. Важно обратить внимание, что возвращаемый URL **не экранирован**.
### Применение функции
Эта функция использует:
- get_home_url()
- rest_get_url_prefix()
### Используется в
- rest_url()
- rest_output_link_wp_head()
### Производительность
- 1 раз: 0.000043 сек (очень быстро)
- 50000 раз: 0.82 сек (очень быстро)
### Версия PHP и WordPress
- PHP: 7.0.5, WordPress: 4.4.2
### Хуки функции
- rest_url
### Возвращаемое значение
Возвращаемая строка — полный URL к эндпойнту.
### Синтаксис использования
```php
get_rest_url( $blog_id, $path, $scheme );
- $blog_id (int|null): ID блога. Если равен
null, ��озвращает URL для текущего блога. - $path (string): Путь REST. Значение по умолчанию:
'/'. - $scheme (string): Схема экранирования. Значение по умолчанию:
'rest'.
Примеры использования
Пример 1: Получение URL различных REST-эндпойнтов
echo get_rest_url();
// Вывод: http://example.com/wp-json/
echo get_rest_url( 5 );
// Вывод: http://subsite.example.com/wp-json/
echo get_rest_url( null, '/foo' );
// Вывод: http://example.com/wp-json/foo
echo get_rest_url( null, '/foo', 'https' );
// Вывод: https://example.com/wp-json/foo
Пример 2: Получение REST-эндпойнта для JavaScript
Если вы используете REST API, скорее всего, вы также будете использовать JavaScript. Вы можете получить REST-эндпойнт, извлекая атрибут href из тега <link>, который WordPress добавляет в <head> вашего сайта:
var endpoint = document.querySelector('link[rel="https://api.w.org/"]').href;
// Этот код извлечет эндпойнт из тега:
//
Примечания
- Глобальная переменная:
$wp_rewrite— компонент перезаписи в WordPress.
Изменения в версии
- С версии 4.4.0 — функция была введена.
Код функции GET_REST_URL()
function get_rest_url( $blog_id = null, $path = '/', $scheme = 'rest' ) {
if ( empty( $path ) ) {
$path = '/';
}
$path = '/' . ltrim( $path, '/' );
if ( is_multisite() && get_blog_option( $blog_id, 'permalink_structure' ) || get_option( 'permalink_structure' ) ) {
global $wp_rewrite;
if ( $wp_rewrite->using_index_permalinks() ) {
$url = get_home_url( $blog_id, $wp_rewrite->index . '/' . rest_get_url_prefix(), $scheme );
} else {
$url = get_home_url( $blog_id, rest_get_url_prefix(), $scheme );
}
$url .= $path;
} else {
$url = trailingslashit( get_home_url( $blog_id, '', $scheme ) );
if ( ! str_ends_with( $url, 'index.php' ) ) {
$url .= 'index.php';
}
$url = add_query_arg( 'rest_route', $path, $url );
}
if ( is_ssl() && isset( $_SERVER['SERVER_NAME'] ) ) {
if ( parse_url( get_home_url( $blog_id ), PHP_URL_HOST ) === $_SERVER['SERVER_NAME'] ) {
$url = set_url_scheme( $url, 'https' );
}
}
if ( is_admin() && force_ssl_admin() ) {
$url = set_url_scheme( $url, 'https' );
}
return apply_filters( 'rest_url', $url, $path, $blog_id, $scheme );
}
Связанные функции
register_rest_field()register_rest_route()rest_ensure_response()rest_is_boolean()rest_output_link_wp_head()rest_sanitize_array()rest_stabilize_value()rest_url()WP_Application_Passwords::create_new_application_password()wp_is_application_passwords_available()wp_is_rest_endpoint()
Эти функции могут быть полезны при работе с REST API в WordPress.