Jawaban:
Anda dapat menggunakan get_page_by_path()
- jangan biarkan nama membodohi Anda, argumen ketiga adalah jenis posting:
if ( $post = get_page_by_path( 'the_slug', OBJECT, 'post_type' ) )
$id = $post->ID;
else
$id = 0;
Jika Anda menunggu beberapa hari, dan meningkatkan ke Wordpress 4.4 yang akan dirilis 8 Desember ( AFAIK ), Anda dapat menggunakan post_name__in
parameter baru di WP_Query
mana mengambil array siput
Jika Anda memerlukan objek posting lengkap
$args = [
'post_type' => 'my_custom_post_type',
'posts_per_page' => 1,
'post_name__in' => ['post-slug']
];
$q = get_posts( $args );
var_dump( $q );
Jika Anda hanya membutuhkan ID
$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
properti dan category_name
parameter, yang seharusnya slug
dan tidakname
Jika Anda hanya ingin id posting ini akan melakukan trik dalam satu baris.
url_to_postid( site_url('the_slug') );
url_to_postid
adalah fungsi yang sangat fleksibel: Anda dapat mengirimkan segala jenis permalink / URL lengkap dan mendapatkan post-ID paling akurat untuk URL itu. Namun, karena penggunaannya yang fleksibel, ini sangat lambat (terutama dengan banyak titik akhir / tipe pasca). Jika Anda hanya memasukkan siput untuk jenis posting tertentu, itu jauh lebih cepat digunakanget_page_by_path()