Có thể lấy id bài đăng loại tùy chỉnh chỉ từ sên?
Theo tôi biết, chúng tôi có thể nhận được từ id bằng cách sử dụng tiêu đề. Nhưng có thể có cùng tiêu đề trong một loại bài đăng tùy chỉnh để sên là duy nhất có khả thi không ???
Có thể lấy id bài đăng loại tùy chỉnh chỉ từ sên?
Theo tôi biết, chúng tôi có thể nhận được từ id bằng cách sử dụng tiêu đề. Nhưng có thể có cùng tiêu đề trong một loại bài đăng tùy chỉnh để sên là duy nhất có khả thi không ???
Câu trả lời:
Bạn có thể sử dụng get_page_by_path()
- đừng để tên đánh lừa bạn, đối số thứ ba là loại bài đăng:
if ( $post = get_page_by_path( 'the_slug', OBJECT, 'post_type' ) )
$id = $post->ID;
else
$id = 0;
Nếu bạn đợi một vài ngày và nâng cấp lên Wordpress 4.4 sẽ được phát hành vào ngày 8 tháng 12 ( AFAIK ), bạn có thể sử dụng post_name__in
tham số mới trong WP_Query
đó có một loạt các con sên
Nếu bạn cần đối tượng bài hoàn chỉnh
$args = [
'post_type' => 'my_custom_post_type',
'posts_per_page' => 1,
'post_name__in' => ['post-slug']
];
$q = get_posts( $args );
var_dump( $q );
Nếu bạn chỉ cần 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
tính và category_name
tham số, lẽ ra phải slug
và khôngname
Nếu bạn chỉ muốn id bài đăng này sẽ thực hiện thủ thuật trong một dòng.
url_to_postid( site_url('the_slug') );
url_to_postid
là một chức năng rất linh hoạt: bạn có thể chuyển vào bất kỳ loại permalink / URL đầy đủ nào và nhận được ID sau chính xác nhất cho URL đó. Tuy nhiên, do cách sử dụng linh hoạt nên nó khá chậm (đặc biệt là có nhiều điểm cuối / loại bài đăng). Nếu bạn chỉ chuyển qua một con sên cho một loại bài cụ thể, thì nó sẽ nhanh hơn rất nhiều để sử dụngget_page_by_path()