Réponses:
Utiliser get_page_by_path($page_path)
:
$page = get_page_by_path( 'about' );
echo get_the_title( $page );
Cela retournera un objet post régulier.
$page = get_page_by_path( 'about/child' );
get_page_by_path
utilise le post_name
champ en interne, pas post_slug
.
Je l'utilise ..
function get_id_by_slug($page_slug) {
$page = get_page_by_path($page_slug);
if ($page) {
return $page->ID;
} else {
return null;
}
}
J'espère que cela aidera quelqu'un.
get_page_by_path
renvoie déjà null…
Il a déjà été demandé et répondu sur ce forum. Je colle le même code à partir de là. Utilisez cette fonction pour récupérer l'identifiant de la page.
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_post($page, $output);
return null;
}
J'ai eu des problèmes avec la réponse choisie en essayant d'utiliser le code plusieurs fois dans la même page. Il continuait d'afficher tout le contenu de mes pages en même temps dans tous les cas. Je suis donc revenu à la réflexion et j'ai proposé cette approche plus simple basée sur la documentation du codex WordPress :
<?php $query = new WP_Query( array( 'pagename' => 'about-me' ) );
while ( $query->have_posts() ) {
$query->the_post();
echo '<h2>'. get_the_title() .'</h2>';
the_content();
}
wp_reset_postdata();
?>
Peut-être que cela peut toujours être utile pour quelqu'un là-bas; D
Beaucoup de réponses ici semblent trop complexes, ou ne décrivent pas comment obtenir spécifiquement l'ID de page.
$page = get_page_by_path("your-page-slug");
if ($page) {
$page_id = $page->ID;
echo $page_id;
}
Dans la description ci-dessus, nous avons assigné l'objet post à $ page - une fois que vous avez l'objet post, vous pouvez obtenir les informations décrites ici: https://codex.wordpress.org/Class_Reference/WP_Post
$page->ID
$page->post_status
$page->post_title
et beaucoup plus