Ottenere il permalink di una pagina senza wpurl
Attualmente ho l'ID di una pagina di cui voglio utilizzare il permalink come parte iniziale della permastruct di un CPT che sto configurando.
Potrei usare get_permalink() ma restituisce l'URL completo:
http://www.example.com/imapage/subpage/subsubpage
ma tutto ciò che voglio ottenere è imapage/subpage/subsubpage
Esiste una funzione che può fare questo o devo creare qualcosa che possa sottrarre la parte non necessaria dell'URL?

In realtà esiste ora una funzione core per questo. wp_make_link_relative($url)
Converte percorsi URL completi in percorsi relativi.
Rimuove i protocolli http o https e il dominio. Mantiene il percorso '/' all'inizio, quindi non è un vero link relativo, ma dalla base della root web.
Esempio
<?php echo wp_make_link_relative('http://localhost/wp_test/sample-page/'); ?>
Questo restituirà /wp_test/sample-page/
Esempio con ID Post
<?php echo wp_make_link_relative(get_permalink( $post->ID )); ?>
Esempio per il post corrente
<?php echo wp_make_link_relative(get_permalink()); ?>
Puoi trovare maggiori informazioni nella documentazione.

Questa risposta dovrebbe essere contrassegnata come quella corretta, perché utilizza una funzione helper integrata di WordPress Core: https://developer.wordpress.org/reference/functions/wp_make_link_relative/

Non esiste una funzionalità incorporata per restituire la parte desiderata, ma dovrebbe essere semplice come utilizzare la funzione home_url() e rimuoverne l'output dall'URL completo, ad esempio:
function get_relative_permalink( $url ) {
return str_replace( home_url(), "", $url );
}

Sono arrivato allo stesso pezzo di codice ma speravo che ci fosse già una funzione nel core che lo restituisse nel modo che desidero.

Non sarai in grado di utilizzare get_permalink()
per questo.
Se esamini il codice di quella funzione in /wp-includes/link-template.php
capirai il perché. Dopo che la struttura del permalink viene analizzata e preparata, il codice esegue questo:
$permalink = home_url( str_replace($rewritecode, $rewritereplace, $permalink) );
Questo viene eseguito immediatamente dopo la creazione della struttura del link e prima che qualsiasi cosa venga passata attraverso un filtro utile.
Quindi, purtroppo, dovrai estrarre manualmente la parte non necessaria dell'URL. Ti consiglio di utilizzare la funzione str_replace()
che @sanchothefat ha suggerito.

$relative_permalink = wp_make_link_relative(get_permalink($post->ID));
wp_make_link_relative( string $link )
Rimuove i protocolli http o https e il dominio. Mantiene il percorso '/' all'inizio, quindi non è un vero link relativo, ma dalla base della root web.
