Obține permalink-ul unei pagini fără wpurl
În prezent am ID-ul unei pagini pe care vreau să îl folosesc ca permalink în fața unei structuri permanente pentru un CPT pe care îl configurez.
Pot folosi get_permalink(), dar aceasta returnează întregul URL:
http://www.example.com/imapage/subpage/subsubpage
dar tot ce vreau să returnez este imapage/subpage/subsubpage
Există o funcție care poate face asta sau trebuie să concepi ceva care să scadă partea ne-necesară a URL-ului?

Există de fapt o funcție de bază pentru asta acum. wp_make_link_relative($url)
Convertesc URL-uri complete în căi relative.
Elimină protocoalele http sau https și domeniul. Păstrează calea '/' la început, deci nu este o legătură relativă adevărată, ci pornind de la rădăcina web.
Exemplu
<?php echo wp_make_link_relative('http://localhost/wp_test/sample-page/'); ?>
Aceasta va afișa /wp_test/sample-page/
Exemplu cu ID-ul postării
<?php echo wp_make_link_relative(get_permalink( $post->ID )); ?>
Exemplu pentru postarea curentă
<?php echo wp_make_link_relative(get_permalink()); ?>
Mai multe despre aceasta pot fi găsite în documentație.

Acest răspuns ar trebui marcat ca fiind cel corect, deoarece utilizează o funcție helper încorporată în WordPress Core: https://developer.wordpress.org/reference/functions/wp_make_link_relative/

Nu există nicio funcționalitate încorporată pentru a returna partea dorită, dar ar trebui să fie la fel de simplu ca utilizarea funcției home_url() și eliminarea ieșirii sale din URL-ul complet, de exemplu:
function get_relative_permalink( $url ) {
return str_replace( home_url(), "", $url );
}

Nu vei putea folosi funcția get_permalink()
pentru asta.
Dacă studiezi codul acestei funcții în fișierul /wp-includes/link-template.php
, vei înțelege de ce. După ce structura permalink-ului este analizată și pregătită, codul face următoarele:
$permalink = home_url( str_replace($rewritecode, $rewritereplace, $permalink) );
Această operațiune este efectuată imediat după crearea structurii link-ului și înainte ca orice să fie transmis printr-un filtru util.
Din păcate, va trebui să extragi manual partea nedorită din URL. Aș recomanda să folosești funcția str_replace()
sugerată de @sanchothefat.

$relative_permalink = wp_make_link_relative(get_permalink($post->ID));
wp_make_link_relative( string $link )
Elimină protocoalele http sau https și domeniul. Păstrează calea '/' la început, deci nu este un link relativ adevărat, ci de la baza rădăcinii web.
