Obține ID-ul obiectului după URL
Încearcă această funcție:
url_to_postid( $url );
Codex-ul WordPress este prietenul tău. O căutare rapidă pe Google ar fi putut oferi răspunsul.

Celelalte răspunsuri sunt valide, dar doar pentru a adăuga o altă metodă (de obicei necunoscută, dar foarte utilă) care este furnizată de o funcție numită: get_page_by_path();
$page = get_page_by_path('parent-page/sub-page');
Este important de menționat că parametrul path poate lua chiar și un SLUG ca parametru. Exemplu:
$page = get_page_by_path('your-slug-of-page-to-exclude');
wp_list_pages('exclude='.$page->ID.'&title_li=');
apoi puteți folosi $page->ID

Nu funcționează, $page-ID
returnează eroarea Notice: Trying to get property of non-object in ....

Utilizează get_queried_object_id()
ca un mapper pentru WP_Query::get_queried_object_id()
.
Spre deosebire de url_to_postid()
, nu trebuie să cunoști URL-ul și funcționează și pentru taxonomii și tipuri personalizate de postări (dacă îmi amintesc corect).
Pentru un exemplu de utilizare, vezi răspunsul meu la Obține ID-ul termenului curent.

Am avut aceeași problemă, dar doar cu tipuri de postări personalizate. Din păcate, url_to_postid( $url );
nu funcționează cu tipurile personalizate, așa că am folosit această funcție bwp_url_to_postid($url).
Această funcție extinde url_to_postid( $url );
pentru a funcționa și cu tipurile de postări personalizate.
Dacă aveți permalink-ul URL-ului, atunci:
<?php $postLink = get_permalink($post_object->ID); ?>
<?php $postId = bwp_url_to_postid($link); ?>
<?php echo $postId ?>
