web-dev-qa-db-fra.com

Comment obtenir le vrai permalien de la page d'accueil statique?

J'ai posé une question très similaire un peu plus tôt aujourd'hui (http://wordpress.stackexchange.com/questions/30392/how-to-get-the-original-post-id-of-a-static-home-page) et j'ai pensé avait la réponse, mais maintenant il en va autrement.

Si, par exemple, j'ai un message/une page avec le permalien original de http://mydomain.com/blog/my-post/ et que je le définit comme page d'accueil statique du blog, je ne peux pas obtenir le permalien d'origine de cette page lorsque je le visite, car WP ne renvoie que la racine (site_url() essentiellement) permalink et me redirige ici, car elle est maintenant définie comme page d'accueil.

Comment puis-je récupérer le permalien ORIGINAL? get_option('page_on_front') ne fonctionne pas car il renverra simplement l'URL racine du blog, telle que http://mydomain.com/blog/. Je dois aller chercher le lien permanent complet d'origine non modifié de la page d'accueil statique actuellement définie.

J'espère que c'est clair ... merci à tous!

1

Edit: Wow. Je me suis trompé dans le peloton la première fois. J'espère que personne ne l'a lu. Tout corrigé maintenant. /modifier

Je suis allé à la spéléologie ... :)

Version courte, la solution de contournement serait la suivante:

<?php 
    $front_page_id = get_option( 'page_on_front' );
    $my_permalink = _get_page_link( $front_page_id ); 
?>

Si vous regardez le fichier link-template.php dans le noyau de WordPress, vous pouvez en quelque sorte tracer le chemin qui se passe. L'appel de the_permalink () mène à get_page_link (), qui renvoie le permalien de l'ID de publication/de page que vous lui transmettez. Cependant, l'une des vérifications effectuées par get_page_link () consiste à vérifier si l'ID demandé est actuellement défini sur "page_on_front". Si tel est le cas, une valeur statique de '/' est renvoyée sous forme de lien permanent. Si ce n'est pas le cas, la fonction _get_page_link () est appelée à la place. Notez le trait de soulignement à l'avant de la fonction.

Afin de résoudre le problème, j'ai coupé passé the_permalink () et get_page_link () et suis allé directement à _get_page_link ().

Il y a peut-être un problème de sécurité ou une raison pour que ce comportement soit un défaut dont je ne suis pas au courant, mais cela fonctionne ...

1
Jeremy Felt