WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

set_url_scheme() WP 3.4.0

Устанавливает протокол для указного URL. Если в $scheme указать relative, то получит относительную ссылку.

Работает на основе: is_ssl(), force_ssl_admin()
✈ 1 раз = 0.000017с = очень быстро | 50000 раз = 0.07с = скорость света | PHP 7.0.2, WP 4.4.1
Хуки из функции
Возвращает

Строку. Измененный URL под выбранную схему.

Использование

set_url_scheme( $url, $scheme );
$url(строка) (обязательный)
URL содержащий протокол http(s).
$scheme(строка/null)

Схема в соответствии с которой нужно изменять URL. Может быть:

http
https
relative    — вернет относительный URL (без домена).
login       — протокол страницы авторизации
login_post
admin
rest
rpc
null        — текущий протокол сайта is_ssl()

По умолчанию: null

Примеры

#1 Подправим URL под нужный протокол.

Демонстрация изменения протокола в URL в зависимости от установленной схемы.

echo set_url_scheme( 'http://example.com/foo', 'https' );    //> http://example.com/foo
echo set_url_scheme( 'http://example.com/foo', 'relative' ); //> /foo
echo set_url_scheme( '//site.ru/foo', 'relative' );      //> /foo
echo set_url_scheme( 'http://example.com/foo', 'http' );    //> http://example.com/foo

Не работает с относительными URL

echo set_url_scheme( '/foo', 'https' );          //> /foo
echo set_url_scheme( '//site.ru/foo', 'https' ); //> /foohttp://example.com/foo

Список изменений

С версии 3.4.0 Введена.
С версии 4.4.0 The 'rest' scheme was added.

Код set url scheme: wp-includes/link-template.php WP 5.3

<?php
function set_url_scheme( $url, $scheme = null ) {
	$orig_scheme = $scheme;

	if ( ! $scheme ) {
		$scheme = is_ssl() ? 'https' : 'http';
	} elseif ( $scheme === 'admin' || $scheme === 'login' || $scheme === 'login_post' || $scheme === 'rpc' ) {
		$scheme = is_ssl() || force_ssl_admin() ? 'https' : 'http';
	} elseif ( $scheme !== 'http' && $scheme !== 'https' && $scheme !== 'relative' ) {
		$scheme = is_ssl() ? 'https' : 'http';
	}

	$url = trim( $url );
	if ( substr( $url, 0, 2 ) === '//' ) {
		$url = 'http:' . $url;
	}

	if ( 'relative' == $scheme ) {
		$url = ltrim( preg_replace( '#^\w+://[^/]*#', '', $url ) );
		if ( $url !== '' && $url[0] === '/' ) {
			$url = '/' . ltrim( $url, "/ \t\n\r\0\x0B" );
		}
	} else {
		$url = preg_replace( '#^\w+://#', $scheme . '://', $url );
	}

	/**
	 * Filters the resulting URL after setting the scheme.
	 *
	 * @since 3.4.0
	 *
	 * @param string      $url         The complete URL including scheme and path.
	 * @param string      $scheme      Scheme applied to the URL. One of 'http', 'https', or 'relative'.
	 * @param string|null $orig_scheme Scheme requested for the URL. One of 'http', 'https', 'login',
	 *                                 'login_post', 'admin', 'relative', 'rest', 'rpc', or null.
	 */
	return apply_filters( 'set_url_scheme', $url, $scheme, $orig_scheme );
}

Cвязанные функции

Из метки: ssl

Еще из раздела: Форматирование

Комментариев нет
    Здравствуйте, !     Войти . Зарегистрироваться