wp_make_link_relative()
Изменяет переданный УРЛ: делает из него относительный. Удаляет http или https протокол и домен, оставляя / в начале: http://example.com/foo станет /foo
С версии 4.1. понимает, если передать уже относительный URL.
1 раз — 0.00002 сек (очень быстро) | 50000 раз — 0.02 сек (скорость света) | PHP 7.1.5, WP 4.8
Хуков нет.
Возвращает
Строку
. Строку: относительный путь.
Использование
wp_make_link_relative( $link );
- $link(строка) (обязательный)
- Полный УРЛ, из которого нужно удалить начальную часть.
Примеры
#1 Создадим относительный УРЛ из абсолютного
Примеры того, что выводит функция при передаче разных 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 Другой вариант сделать абсолютную ссылку относительной
Для этого можно использовать wp_parse_url() с параметром PHP_URL_PATH
:
wp_parse_url( 'http://example.com/foo/page/', PHP_URL_PATH ); // /foo/page/
Отличается он тем, что срезает все параметры запроса начинающиеся с ?
:
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 | Введена. |
С версии 4.1.0 | Support was added for relative URLs. |
Код wp_make_link_relative() wp make link relative WP 6.6.1
function wp_make_link_relative( $link ) { return preg_replace( '|^(https?:)?//[^/]+(/?.*)|i', '$2', $link ); }