Получить ID объекта по URL
Попробуйте эту функцию:
url_to_postid( $url );
Кодекс WordPress — ваш друг. Быстрый поиск в Google мог бы дать ответ.

Другие ответы верны, но стоит добавить еще один (обычно неизвестный, но очень полезный) метод, который предоставляется функцией: get_page_by_path();
$page = get_page_by_path('родительская-страница/дочерняя-страница');
Важно отметить, что параметр path может принимать даже СЛАГ в качестве параметра. Пример:
$page = get_page_by_path('ваш-слаг-страницы-для-исключения');
wp_list_pages('exclude='.$page->ID.'&title_li=');
Затем вы можете использовать $page->ID

Не работает, $page-ID
возвращает ошибку Notice: Trying to get property of non-object in ....

Используйте get_queried_object_id()
в качестве маппера для WP_Query::get_queried_object_id()
.
В отличие от url_to_postid()
, вам не нужно знать URL, и это работает для таксономий и пользовательских типов записей (если я правильно помню).
Пример использования смотрите в моём ответе на вопрос Получить ID текущего термина.

У меня была такая же проблема, но с пользовательскими типами записей. К сожалению, функция url_to_postid( $url );
не работает с пользовательскими типами, поэтому я использовал функцию bwp_url_to_postid($url).
Эта функция расширяет url_to_postid( $url );
для работы с пользовательскими типами записей.
Если у вас есть постоянная ссылка URL, тогда:
<?php $postLink = get_permalink($post_object->ID); ?>
<?php $postId = bwp_url_to_postid($link); ?>
<?php echo $postId ?>
