как получить id страницы используя её slug
Используйте get_page_by_path($page_path)
:
$page = get_page_by_path( 'about' );
echo get_the_title( $page );
Эта функция вернет стандартный объект записи.
Документация:
https://developer.wordpress.org/reference/functions/get_page_by_path/
https://developer.wordpress.org/reference/functions/get_the_title/

@freaky Функция принимает только slug страницы, а не slug родителя. Поскольку slugs уникальны, вы всегда получите только одну страницу.

Спасибо, это работает, а для дочерней страницы пришлось указать путь так $page = get_page_by_path( 'about/child' );

Просто для уточнения, функция get_page_by_path
внутри использует поле post_name
, а не post_slug
.

Просто чтобы уточнить, здесь используется путь страницы, а не её название, верно? То есть для страницы с названием "О нас" аргументом должно быть "about-us", правильно? Без начальных или конечных слешей?

Этот вопрос уже задавался и был отвечен на этом форуме. Я вставляю тот же самый код оттуда. Используйте эту функцию для получения ID страницы.
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;
}

Функция url_to_postid существует в WordPress начиная с версии 1.0.0 :) Эту задачу проще всего выполнить с помощью данной функции.
Если страница находится на верхнем уровне, достаточно указать только её ярлык (slug).
Например: url_to_postid('slug');
Если страница находится на более низком уровне иерархии (т.е. имеет родительскую страницу), необходимо добавить ярлык родителя через слеш:
url_to_postid('parent-slug/child-slug');
Примечание: если функция возвращает 0, следует сбросить постоянные ссылки (откройте страницу настроек постоянных ссылок в админке WordPress) - обычно это нужно сделать только один раз

У меня возникли проблемы с выбранным ответом при попытке использовать код несколько раз на одной странице. Он продолжал отображать всё содержимое моих страниц одновременно в каждом экземпляре. Поэтому я вернулся к размышлениям и придумал этот более простой подход на основе документации 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();
?>
Возможно, это всё ещё может быть полезно кому-то ;D

Много ответов здесь кажутся слишком сложными или не объясняют, как именно получить ID страницы.
$page = get_page_by_path("ваш-слаг-страницы");
if ($page) {
$page_id = $page->ID;
echo $page_id;
}
В приведенном выше примере мы присвоили объект записи переменной $page. Получив объект записи, вы можете получить любую информацию, описанную здесь: https://codex.wordpress.org/Class_Reference/WP_Post
$page->ID
$page->post_status
$page->post_title
и многое другое
