Respuestas:
Uso get_page_by_path($page_path)
:
$page = get_page_by_path( 'about' );
echo get_the_title( $page );
Esto devolverá un objeto de publicación regular.
$page = get_page_by_path( 'about/child' );
get_page_by_path
usa el post_name
campo internamente, no post_slug
.
He estado usando esto ...
function get_id_by_slug($page_slug) {
$page = get_page_by_path($page_slug);
if ($page) {
return $page->ID;
} else {
return null;
}
}
Espero que esto ayude a alguien.
get_page_by_path
ya devuelve nulo ...
Ya se ha preguntado y respondido en este foro. Estoy pegando el mismo código desde allí. Use esta función para recuperar la identificación de la página.
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;
}
Tuve problemas con la respuesta elegida al intentar usar el código varias veces en la misma página. Seguía mostrando todo el contenido de mis páginas al mismo tiempo en cada instancia. Así que volví a pensar y se me ocurrió este enfoque más simple basado en la documentación de WordPress Codex :
<?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();
?>
Tal vez aún pueda ser útil para alguien por ahí; D
Aquí hay muchas respuestas que parecen demasiado complejas o que no describen cómo obtener la ID de la página específicamente.
$page = get_page_by_path("your-page-slug");
if ($page) {
$page_id = $page->ID;
echo $page_id;
}
En la descripción anterior, hemos asignado el objeto de publicación a $ page: una vez que tenga el objeto de publicación, puede obtener la información que se describe aquí: https://codex.wordpress.org/Class_Reference/WP_Post
$page->ID
$page->post_status
$page->post_title
y mucho más