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
(дуже швидко) | 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('//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 був added for relative URLs. |
Код wp_make_link_relative() wp make link relative WP 6.0.2
function wp_make_link_relative( $link ) { return preg_replace( '|^(https?:)?//[^/]+(/?.*)|i', '$2', $link ); }