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.png
2. Еще один способ сделать абсолютный 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.