Antworten:
Sie können verwenden get_page_by_path()- lassen Sie sich nicht vom Namen täuschen, das dritte Argument ist der Beitragstyp:
if ( $post = get_page_by_path( 'the_slug', OBJECT, 'post_type' ) )
$id = $post->ID;
else
$id = 0;
Wenn Sie ein paar Tage warten und ein Upgrade auf Wordpress 4.4 durchführen , das am 8. Dezember ( AFAIK ) veröffentlicht wird, können Sie den neuen post_name__inParameter verwenden, in WP_Querydem eine Reihe von Slugs verwendet werden
Wenn Sie das komplette Beitragsobjekt benötigen
$args = [
'post_type' => 'my_custom_post_type',
'posts_per_page' => 1,
'post_name__in' => ['post-slug']
];
$q = get_posts( $args );
var_dump( $q );
Wenn Sie nur die ID benötigen
$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_nameEigenschaft und der category_nameParameter, die hätten sein sollen slugund nichtname
Wenn Sie nur die Beitrags-ID möchten, erledigt dies den Trick in einer Zeile.
url_to_postid( site_url('the_slug') );
url_to_postidist eine sehr flexible Funktion: Sie können jede Art von Permalink / vollständiger URL übergeben und die genaueste Post-ID für diese URL erhalten. Aufgrund der flexiblen Nutzung ist es jedoch recht langsam (insbesondere mit vielen Endpunkten / Post-Typen). Wenn Sie nur einen Slug für einen bestimmten Post-Typ übergeben, ist es viel schneller zu verwendenget_page_by_path()