set_url_scheme

Устанавливает протокол http(s) для указного URL и выбранного типа URL. Если в тип указать ‘relative’, то получит относительную ссылку.

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

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

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

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

Схема в соответствии с которой нужно изменять URL. Может быть: http, https, relative, login, login_post, admin, rest, rpc, или null.

Типы: вроде login устанавливают протокол в соответствии с тем, который должен использоваться на странице данного типа.
По умолчанию: null

Примеры

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

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

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

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

echo set_url_scheme( '/foo', 'https' );          //> /foo
echo set_url_scheme( '//site.ru/foo', 'https' ); //> /foohttps://site.ru/foo

Код из


wp-includes/link-template.php

WP 4.7.2

<?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 , "/ tnr