Je dispose actuellement d'un identifiant de page que je souhaite utiliser comme lien permanent par-dessus un permastructure d'un CPT que je suis en train de configurer.
Maintenant, je peux utiliser get_permalink () mais cela renvoie l'URL complète:
http://www.example.com/imapage/subpage/subsubpage
mais tout ce que je veux retourner est imapage/subpage/subsubpage
Existe-t-il une fonction permettant de faire cela ou dois-je utiliser un périphérique capable de soustraire la partie non nécessaire de l'URL?
Rien n'est intégré pour renvoyer le bit que vous voulez mais cela devrait être aussi simple que d'utiliser la fonction home_url () et de supprimer sa sortie de l'URL complète, par exemple:
function get_relative_permalink( $url ) {
return str_replace( home_url(), "", $url );
}
Il existe actuellement une fonction essentielle pour cela. wp_make_link_relative($url)
Convertissez les chemins d’URL complets en chemins relatifs.
Supprime les protocoles http ou https et le domaine. Conserve le chemin '/' au début, ce n'est donc pas un vrai lien relatif, mais à partir de la base racine Web.
Exemple
<?php echo wp_make_link_relative('http://localhost/wp_test/sample-page/'); ?>
Ceci produira /wp_test/sample-page/
Exemple avec Post ID <?php echo wp_make_link_relative(get_permalink( $post->ID )); ?>
Exemple pour le message en cours <?php echo wp_make_link_relative(get_permalink()); ?>
Vous trouverez plus d'informations à ce sujet dans documentation .
Vous ne pourrez pas utiliser get_permalink()
pour cela.
Si vous creusez dans le code de cette fonction dans /wp-includes/link-template.php
, vous comprendrez pourquoi. Une fois la structure permalien analysée et préparée, le code procède comme suit:
$permalink = home_url( str_replace($rewritecode, $rewritereplace, $permalink) );
Ceci est effectué immédiatement après la création de la structure du lien et avant que quoi que ce soit ne soit passé à travers un filtre utile.
Donc, malheureusement, vous devrez extraire vous-même la partie non nécessaire de l'URL. Je vous recommande d'utiliser la fonction str_replace()
proposée par @sanchothefat.
$path = parse_url(get_permalink(...), PHP_URL_PATH);
... donne le URL PATH only. Ce n'est pas relatif à la racine du blog mais au domaine. C'est l'URI absolu.