wp_make_link_relative() WP 2.1.0

Змінює переданий УРЛ: робить із нього відносний. Видаляє 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
(рядок) (обов’язковий)
Повний УРЛ, з якого необхідно видалити початкову частину.

Приклади

0

#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
0

#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.0Support був added for relative URLs.

Код wp_make_link_relative() WP 6.0.2

function wp_make_link_relative( $link ) {
	return preg_replace( '|^(https?:)?//[^/]+(/?.*)|i', '$2', $link );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *