Odpowiedzi:
Możesz użyć get_page_by_path()
- nie daj się zwieść nazwie, trzeci argument to typ postu:
if ( $post = get_page_by_path( 'the_slug', OBJECT, 'post_type' ) )
$id = $post->ID;
else
$id = 0;
Jeśli zaczekasz kilka dni i uaktualnisz do Wordpress 4.4, który zostanie wydany 8 grudnia ( AFAIK ), możesz użyć nowego post_name__in
parametru, w WP_Query
którym pobiera tablicę ślimaków
Jeśli potrzebujesz pełnego obiektu postu
$args = [
'post_type' => 'my_custom_post_type',
'posts_per_page' => 1,
'post_name__in' => ['post-slug']
];
$q = get_posts( $args );
var_dump( $q );
Jeśli potrzebujesz tylko identyfikatora
$args = [
'post_type' => 'my_custom_post_type',
'posts_per_page' => 1,
'post_name__in' => ['post-slug'],
'fields' => 'ids'
];
$q = get_posts( $args );
var_dump( $q );
post_name
właściwość i category_name
parametr, które powinny slug
i nie powinny byćname
Jeśli chcesz tylko identyfikator posta, zrobi to samo w jednym wierszu.
url_to_postid( site_url('the_slug') );
url_to_postid
Jest bardzo elastyczna funkcja: można przejść w dowolnym rodzaju permalink / pełny adres URL i uzyskać najdokładniejsze post-ID dla tego adresu URL. Jednak ze względu na elastyczne użycie jest dość powolny (szczególnie w przypadku wielu punktów końcowych / typów postowych). Jeśli podajesz ślimak tylko dla określonego rodzaju posta, jego użycie jest znacznie szybszeget_page_by_path()