Est-il possible d'obtenir le lien permanent d'une page à partir de la limace seule? Je suis conscient que vous pouvez obtenir le permalien de la page à partir de l'ID en utilisant get_page_link()
:
<a href="<?php echo get_page_link(40); ?>">Map</a>
Je suis curieux de savoir s'il existe un moyen de faire la même chose avec le slug d'une page - comme ceci:
<a href="<?php echo get_page_link('map'); ?>">Map</a>
permalinks
pages
slug
Sampson
la source
la source
get_permalink(get_page_by_path('contact')->ID));
?get_page_by_path()
renvoie un tableau de toutes les informations de page.get_permalink()
prend un identifiant de page comme premier argument. Je pensais que je devrais explicitement passer la valeur ID.Je pense que cela pourrait être mieux:
suivant le modèle "original"
get_page_by_title
de wordpress . (ligne 3173)rgds
la source
function get_page_by_slug($page_slug, $output = OBJECT, $post_type = 'page' ) { global $wpdb; $page = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type= %s AND post_status = 'publish'", $page_slug, $post_type ) ); if ( $page ) return get_page($page, $output); return null; }
\WP_Post
partir de celle-ci, qui résout directement dans toutes les fonctions wordpress qui recherchent d'autres valeurs.\WP_Post
fournit également des méthodes directement pour trouver la plupart des données relatives à la publication.C'est une méthode publiée par Tom McFarlin sur son blog :
Il fonctionne avec les types de publication personnalisés et les types de publication intégrés (tels que
post
etpage
).la source
la réponse acceptée est fausse car les pages hiérarchiques ne fonctionnent pas comme ça. En termes simples, le slug n'est pas toujours le chemin de la page ou de la publication. Par exemple, votre page a un enfant, etc. le chemin sera
parent-slug/child-slug
etget_page_by_path
ne trouvera paschild-slug
cette voie. La solution appropriée est la suivante:la source
Essaye ça:
get_page_by_path( 'path' )
retourne l'objet page / post qui peut ensuite être utiliséget_page_link()
car il accepte l'objet post / page et renvoie un lien permanent.la source
Utilisez cette fonction en
la source