WP_MAKE_LINK_RELATIVE() │ WP 2.1.0
Функция WP_MAKE_LINK_RELATIVE() преобразует полные URL-адреса в относительные пути. 
Описание функции
Эта функция удаляет протокол (http или https) и доменное имя, оставляя только путь к ресурсу. Путь начинается с символа /, поэтому это не совсем относительная ссылка, а скорее ссылка относительно корня веб-сайта.
- Время выполнения — 0.00002 секунды (очень быстро)
- 50000 вызовов — 0.02 секунды (мгновенно)
- PHP 7.1.5, WP 4.8
Хуки
Функция не использует хуки.
Возвращаемое значение
Функция возвращает строку — абсолютный путь.
Применение
wp_make_link_relative( $link );Параметры:
- $link(строка) — полный URL-адрес (обязательный).
Примеры
1. Преобразование абсолютного URL в относительный
Посмотрим, что возвращает функция при передаче различных URL-адресов:
echo wp_make_link_relative('http://example.com/foo/page/'); //> /foo/page/
echo wp_make_link_relative('http://example.com/foo/?bar=baz'); //> /foo/?bar=baz
echo wp_make_link_relative('/sample-page/'); //> /sample-page/
echo wp_make_link_relative('//example.com/sample-page/'); //> /sample-page/
echo wp_make_link_relative('http://example.com/image.jpg 1x'); //> /image.jpg 1x
echo wp_make_link_relative(''); //> ''Однако обратите внимание:
echo wp_make_link_relative('//wp-content/file.png'); //> /file.png2. Еще один способ сделать абсолютный URL относительным
Для этого можно использовать функцию wp_parse_url() с параметром PHP_URL_PATH:
wp_parse_url('http://example.com/foo/page/', PHP_URL_PATH); // /foo/page/Эта функция удаляет все параметры запроса, начинающиеся с ?.
Пример использования wp_parse_url():
wp_parse_url('http://example.com/foo/?bar=baz', PHP_URL_PATH); // /foo/Сравним это с wp_make_link_relative():
$res = [
    wp_make_link_relative('http://example.com/foo/?bar=baz'),
    wp_make_link_relative('http://example.com/foo/page/'),
    wp_make_link_relative('/sample-page/'),
    wp_make_link_relative('//example.com/sample-page/'),
    wp_make_link_relative('http://example.com/image.jpg 1x'),
    wp_make_link_relative('//wp-content/file.png'),
];
$res2 = [
    wp_parse_url('http://example.com/foo/?bar=baz', PHP_URL_PATH),
    wp_parse_url('http://example.com/foo/page/', PHP_URL_PATH),
    wp_parse_url('/sample-page/', PHP_URL_PATH),
    wp_parse_url('//example.com/sample-page/', PHP_URL_PATH),
    wp_parse_url('http://example.com/image.jpg 1x', PHP_URL_PATH),
    wp_parse_url('//wp-content/file.png', PHP_URL_PATH),
];
foreach ($res as $k => $re) {
    echo ($re === $res2[$k] ? 'YES' : 'NO') . " - $re === {$res2[$k]}n";
}
/*
NO - /foo/?bar=baz === /foo/
YES - /foo/page/ === /foo/page/
YES - /sample-page/ === /sample-page/
YES - /sample-page/ === /sample-page/
YES - /image.jpg 1x === /image.jpg 1x
YES - /file.png === /file.png
*/Изменения в версии
Функция была введена в версии 2.1.0. Поддержка относительных URL-адресов была добавлена в версии 4.1.0.
Код функции
function wp_make_link_relative( $link ) {
    return preg_replace( '|^(https?:)?//[^/]+(/?.*)|i', '$2', $link );
}Этот код использует регулярное выражение для удаления протокола и доменного имени из URL-адреса.
Теперь вы знаете, как использовать функцию WP_MAKE_LINK_RELATIVE() для преобразования абсолютных ссылок в относительные. Это может быть полезно в различных сценариях на вашем сайте WordPress.
 
						