cum să obții ID-ul unei pagini folosind slug-ul paginii
Utilizează get_page_by_path($page_path)
:
$page = get_page_by_path( 'despre' );
echo get_the_title( $page );
Aceasta va returna un obiect post obișnuit.
Documentație:
https://developer.wordpress.org/reference/functions/get_page_by_path/
https://developer.wordpress.org/reference/functions/get_the_title/

@freaky Funcția acceptă doar slug-ul paginii, nu slug-ul părintelui. Deoarece slug-urile sunt unice, vei obține întotdeauna doar o singură pagină.

Mulțumesc, funcționează, iar pentru pagina copil a trebuit să navighez astfel: $page = get_page_by_path( 'about/child' );

Doar pentru a clarifica, get_page_by_path
folosește intern câmpul post_name
, nu post_slug
.

Doar pentru a fi clar, aceasta folosește calea paginii și nu numele paginii, corect? Deci pentru o pagină numită "Despre noi", argumentul ar trebui să fie "despre-noi", corect? fără slash-uri la început sau la sfârșit?

Această întrebare a fost deja adresată și răspunsă pe acest forum. Voi repeta același cod de acolo. Folosiți această funcție pentru a obține ID-ul paginii.
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;
}

Există o funcție url_to_postid încă din WordPress v1.0.0 :) Această sarcină se realizează cel mai ușor folosind această funcție.
Când pagina este o pagină de nivel superior, trebuie furnizat doar slug-ul.
ex. url_to_postid('slug');
Când pagina se află într-un nivel ierarhic inferior (adică are un părinte), trebuie să adăugați slug-ul părintelui, separați prin slash, astfel:
url_to_postid('parent-slug/child-slug');
Editare: dacă aceasta returnează 0, ar trebui să resetați legăturile permanente (deschideți pagina de legături permanente din administrarea WordPress) - acest lucru este necesar doar o singură dată

Am avut probleme cu răspunsul ales atunci când am încercat să folosesc codul de mai multe ori pe aceeași pagină. Continuam să afișez tot conținutul paginilor mele simultan în fiecare instanță. Așa că m-am întors la gândire și am venit cu această abordare mai simplă bazată pe documentația din WordPress Codex:
<?php $query = new WP_Query( array( 'pagename' => 'despre-mine' ) );
while ( $query->have_posts() ) {
$query->the_post();
echo '<h2>'. get_the_title() .'</h2>';
the_content();
}
wp_reset_postdata();
?>
Poate încă mai poate fi util cuiva acolo ;D

Multe răspunsuri de aici par excesiv de complexe sau nu descriu cum să obții în mod specific ID-ul paginii.
$page = get_page_by_path("slug-ul-paginii-tale");
if ($page) {
$page_id = $page->ID;
echo $page_id;
}
În descrierea de mai sus, am atribuit obiectul postării variabilei $page. Odată ce ai obiectul postării, poți obține oricare dintre informațiile descrise aici: https://codex.wordpress.org/Class_Reference/WP_Post
$page->ID
$page->post_status
$page->post_title
și multe altele
