Получить постоянную ссылку страницы без домена WordPress
У меня есть ID страницы, постоянную ссылку которой я хочу использовать как основу для структуры постоянных ссылок настраиваемого типа записи.
Я могу использовать get_permalink(), но он возвращает полный URL:
http://www.example.com/imapage/subpage/subsubpage
но мне нужно получить только imapage/subpage/subsubpage
Существует ли функция для этого или мне нужно самостоятельно вырезать ненужную часть URL?

Теперь для этого существует встроенная функция. wp_make_link_relative($url)
Преобразует полные URL-адреса в относительные пути.
Удаляет протоколы http или https и домен. Сохраняет начальный слеш '/' в пути, поэтому это не совсем относительная ссылка, а путь относительно корня веб-сайта.
Пример
<?php echo wp_make_link_relative('http://localhost/wp_test/sample-page/'); ?>
Результат будет: /wp_test/sample-page/
Пример с ID записи
<?php echo wp_make_link_relative(get_permalink( $post->ID )); ?>
Пример для текущей записи
<?php echo wp_make_link_relative(get_permalink()); ?>
Подробнее об этом можно узнать в документации.

Этот ответ следует отметить как правильный, потому что он использует встроенную вспомогательную функцию WordPress Core: https://developer.wordpress.org/reference/functions/wp_make_link_relative/

Вы не сможете использовать get_permalink()
для этой задачи.
Если изучить код этой функции в файле /wp-includes/link-template.php
, станет понятно почему. После того как структура постоянной ссылки разобрана и подготовлена, код выполняет следующее:
$permalink = home_url( str_replace($rewritecode, $rewritereplace, $permalink) );
Это выполняется сразу после создания структуры ссылки и до того, как что-либо будет передано через полезный фильтр.
К сожалению, вам придётся самостоятельно извлекать ненужную часть URL. Я бы рекомендовал использовать функцию str_replace()
, которую предложил @sanchothefat.

$relative_permalink = wp_make_link_relative(get_permalink($post->ID));
wp_make_link_relative( string $link )
Удаляет протоколы http или https и домен. Сохраняет слеш '/' в начале пути, поэтому это не абсолютно относительная ссылка, а относительная от корня веб-сайта.
