come ottenere l'ID di una pagina utilizzando lo slug della pagina
Usa get_page_by_path($page_path)
:
$page = get_page_by_path( 'about' );
echo get_the_title( $page );
Questo restituirà un normale oggetto post.
Documentazione:
https://developer.wordpress.org/reference/functions/get_page_by_path/
https://developer.wordpress.org/reference/functions/get_the_title/

@freaky La funzione accetta solo lo slug della pagina, non lo slug del genitore. Dato che gli slug sono univoci, otterrai sempre una sola pagina.

Grazie, funziona e per la pagina figlia ho dovuto navigare così $page = get_page_by_path( 'about/child' );

Per chiarire, get_page_by_path
utilizza internamente il campo post_name
, non post_slug
.

Per essere chiari, questa funzione utilizza il percorso della pagina e non il nome della pagina, corretto? Quindi per una pagina chiamata "Chi siamo" l'argomento dovrebbe essere "chi-siamo", giusto? Senza barre all'inizio o alla fine?

È già stato chiesto e risposto su questo forum. Incollo lo stesso codice da lì. Usa questa funzione per recuperare l'ID della pagina.
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;
}

Esiste una funzione url_to_postid disponibile sin da WordPress v1.0.0 :) Questo compito è più semplice da realizzare utilizzando questa funzione.
Quando la pagina è una pagina di primo livello, basta fornire solo lo slug.
Ad esempio: url_to_postid('slug');
Quando la pagina si trova in un livello gerarchico inferiore (cioè ha una pagina genitore), è necessario anteporre lo slug del genitore separato da una barra in questo modo:
url_to_postid('slug-genitore/slug-figlio');
Modifica: se questa funzione restituisce 0, dovresti rigenerare i permalink (apri la pagina dei permalink in amministrazione) - questa operazione è necessaria solo una volta

Ho avuto problemi con la risposta scelta quando cercavo di utilizzare il codice più volte nella stessa pagina. Continuava a mostrare tutto il contenuto delle mie pagine contemporaneamente in ogni istanza. Quindi sono tornato a riflettere e ho trovato questo approccio più semplice basato sulla documentazione del 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();
?>
Forse può ancora essere utile a qualcuno là fuori ;D

Molte risposte qui sembrano eccessivamente complesse o non descrivono come ottenere specificamente l'ID della pagina.
$page = get_page_by_path("il-tuo-slug-di-pagina");
if ($page) {
$page_id = $page->ID;
echo $page_id;
}
Nella descrizione sopra abbiamo assegnato l'oggetto post a $page - Una volta che hai l'oggetto post puoi ottenere qualsiasi informazione descritta qui: https://codex.wordpress.org/Class_Reference/WP_Post
$page->ID
$page->post_status
$page->post_title
e molto altro ancora
