เป็นไปได้หรือไม่ที่จะคว้ารหัสโพสต์ประเภทโพสต์ที่กำหนดเองจากกระสุนเพียงอย่างเดียว?
เท่าที่ฉันรู้เราสามารถได้รับจาก id โดยใช้ชื่อ แต่อาจมีชื่อเรื่องเดียวกันในประเภทโพสต์ที่กำหนดเองเพื่อให้ทากเป็นเอกลักษณ์เป็นไปได้ ???
เป็นไปได้หรือไม่ที่จะคว้ารหัสโพสต์ประเภทโพสต์ที่กำหนดเองจากกระสุนเพียงอย่างเดียว?
เท่าที่ฉันรู้เราสามารถได้รับจาก id โดยใช้ชื่อ แต่อาจมีชื่อเรื่องเดียวกันในประเภทโพสต์ที่กำหนดเองเพื่อให้ทากเป็นเอกลักษณ์เป็นไปได้ ???
คำตอบ:
คุณสามารถใช้get_page_by_path()- อย่าให้ชื่อหลอกคุณอาร์กิวเมนต์ที่สามคือประเภทโพสต์:
if ( $post = get_page_by_path( 'the_slug', OBJECT, 'post_type' ) )
$id = $post->ID;
else
$id = 0;
หากคุณรอสองสามวันและอัปเกรดเป็นWordpress 4.4ซึ่งจะวางจำหน่ายในวันที่ 8 ธันวาคม ( AFAIK ) คุณสามารถใช้post_name__inพารามิเตอร์ใหม่WP_Queryซึ่งใช้อาร์เรย์ของกระสุน
หากคุณต้องการวัตถุโพสต์ที่สมบูรณ์
$args = [
'post_type' => 'my_custom_post_type',
'posts_per_page' => 1,
'post_name__in' => ['post-slug']
];
$q = get_posts( $args );
var_dump( $q );
หากคุณต้องการ 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คุณสมบัติและcategory_nameพารามิเตอร์ซึ่งควรจะเป็นslugและไม่ใช่name
หากคุณต้องการรหัสโพสต์สิ่งนี้จะทำเคล็ดลับในหนึ่งบรรทัด
url_to_postid( site_url('the_slug') );
url_to_postidเป็นฟังก์ชั่นที่มีความยืดหยุ่นมาก: คุณสามารถส่งผ่านในชนิดของความคิดเห็น / URL เต็มรูปแบบใด ๆ และได้รับถูกต้องโพสต์-ID ที่สุดสำหรับ URL ที่ อย่างไรก็ตามเนื่องจากการใช้งานที่ยืดหยุ่นจึงค่อนข้างช้า (โดยเฉพาะกับจุดปลาย / ประเภทโพสต์) หากคุณผ่านการบุ้งเฉพาะประเภทโพสต์ที่เฉพาะเจาะจงมันจะเร็วกว่ามากที่จะใช้get_page_by_path()