get_rest_url() WP 4.4.0

Отримує URL-адресу кінцевої точки REST API. Дозволяє вказати сайт мережі.

URL, що повертається, не очищається для виведення на екран. Тому перед виводом скористайтеся функцією esc_url() .

Працює на основі:
get_home_url() ,
rest_get_url_prefix()

Повертає

Строку. URL до кінцевої точки REST API.

Використання

get_rest_url($blog_id, $path, $scheme);
$blog_id
(число)
ID сайту/блогу. Передається до
get_home_url()


Типово: null (поточний сайт)
$path
(рядок)
REST маршрут (шлях). Додається в кінці URL, останній слеш видаляється, якщо він є.


За замовчуванням: ‘/’
$scheme
(рядок)
Схема очищення даних. Передається до
get_home_url() .


За замовчуванням: ‘rest’

Приклади

0

#1 Демонстрація роботи

Отримаємо URL різних кінцевих точок REST

echo get_rest_url();
//> http://wp-kama.ru/wp-json/

echo get_rest_url(5);
//> http://subsite.wp-kama.ru/wp-json/

echo get_rest_url(0, '/foo');
//> http://wp-kama.ru/wp-json/foo

echo get_rest_url(0, '/foo', 'https');
//> https://wp-doc.com/wp-json/foo

нотатки

  • Global. WP_Rewrite. $wp_rewrite WordPress rewrite component.

список змін

З версії 4.4.0Введено.

Код get_rest_url() WP 6.0.2

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 ) );
		// nginx only allows HTTP/1.0 methods when redirecting from / to /index.php.
		// Для роботи за цим, ми manually add index.php до URL, avoiding the redirect.
		if ( 'index.php' !== substr( $url, 9 ) ) {
			$url .= 'index.php';
		}

		$url = add_query_arg('rest_route', $path, $url);
	}

	if ( is_ssl() && isset( $_SERVER['SERVER_NAME'] ) ) {
		// Якщо поточний host is the same as the REST URL host, force the REST URL scheme to HTTPS.
		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() ) {
		/*
		 * У цій заявці home URL може бути http:, and `is_ssl()` може бути false,
		 * але admin is served over https: (one way or another), so REST API usage
		 * Will be blocked by browsers unless it is also served over HTTPS.
		 */
		$url = set_url_scheme($url, 'https');
	}

	/**
	 * Filters the REST URL.
	 *
	 * Use this filter to adjust the url returned by get_rest_url() function.
	 *
	 * @ Since 4.4.0
	 *
	 * @param string $url REST URL.
	 * @param string $path REST route.
	 * @param int|null $blog_id Blog ID.
	 * @param string $scheme Sanitization scheme.
	 */
	return apply_filters( 'rest_url', $url, $path, $blog_id, $scheme);
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *