Obtener el enlace permanente de una página sin wpurl
Actualmente tengo el ID de una página que quiero usar como parte frontal del permastruct de un CPT que estoy configurando.
Puedo usar get_permalink() pero eso devuelve la URL completa:
http://www.example.com/imapage/subpage/subsubpage
Pero solo quiero obtener imapage/subpage/subsubpage
¿Existe alguna función que pueda hacer esto o tengo que crear algo que reste la parte no necesaria de la URL?

Ahora existe una función nativa para esto. wp_make_link_relative($url)
Convierte URLs completas en rutas relativas.
Elimina los protocolos http o https y el dominio. Mantiene la barra '/' al inicio, por lo que no es un enlace relativo verdadero, sino desde la raíz del sitio web.
Ejemplo
<?php echo wp_make_link_relative('http://localhost/wp_test/sample-page/'); ?>
Esto mostrará /wp_test/sample-page/
Ejemplo con ID de entrada
<?php echo wp_make_link_relative(get_permalink( $post->ID )); ?>
Ejemplo para la entrada actual
<?php echo wp_make_link_relative(get_permalink()); ?>
Puedes encontrar más información en la documentación.

Esta respuesta debería marcarse como la correcta, porque utiliza una función auxiliar integrada del núcleo de WordPress: https://developer.wordpress.org/reference/functions/wp_make_link_relative/

No hay una función incorporada para devolver la parte que necesitas, pero debería ser tan sencillo como usar la función home_url() y eliminar su salida de la URL completa, por ejemplo:
function get_relative_permalink( $url ) {
// Reemplaza la URL base con una cadena vacía para obtener el permalink relativo
return str_replace( home_url(), "", $url );
}

Llegué al mismo fragmento de código pero esperaba que hubiera alguna función ya en el núcleo que lo devolviera de la manera que quiero.

No podrás usar get_permalink()
para eso.
Si revisas el código de esa función en /wp-includes/link-template.php
verás por qué. Después de que la estructura del enlace permanente es analizada y preparada, el código hace esto:
$permalink = home_url( str_replace($rewritecode, $rewritereplace, $permalink) );
Esto se ejecuta inmediatamente después de crear la estructura del enlace y antes de que pase por algún filtro útil.
Así que desafortunadamente, tendrás que extraer la parte no deseada de la URL por ti mismo. Recomendaría usar la función str_replace()
que sugirió @sanchothefat.

$relative_permalink = wp_make_link_relative(get_permalink($post->ID));
wp_make_link_relative( string $enlace )
Elimina los protocolos http o https y el dominio. Mantiene la barra '/' al inicio, por lo que no es un enlace relativo verdadero, sino desde la base de la raíz del sitio web.
