Câu trả lời:
Sử dụng get_page_by_path($page_path)
:
$page = get_page_by_path( 'about' );
echo get_the_title( $page );
Điều này sẽ trả về một đối tượng bài thông thường.
$page = get_page_by_path( 'about/child' );
get_page_by_path
sử dụng các post_name
lĩnh vực trong nội bộ, không post_slug
.
Tôi đã sử dụng cái này ..
function get_id_by_slug($page_slug) {
$page = get_page_by_path($page_slug);
if ($page) {
return $page->ID;
} else {
return null;
}
}
Hy vọng điều này sẽ giúp được ai đó.
get_page_by_path
đã trả về null từ
Nó đã được hỏi và trả lời trên diễn đàn này. Tôi đang dán cùng một mã từ đó. Sử dụng chức năng này để lấy id trang.
function get_page_by_slug($page_slug, $output = OBJECT, $post_type = 'page' ) {
global $wpdb;
$page = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type= %s AND post_status = 'publish'", $page_slug, $post_type ) );
if ( $page )
return get_post($page, $output);
return null;
}
Tôi gặp vấn đề với câu trả lời được chọn khi cố gắng sử dụng mã nhiều lần trong cùng một trang. Nó tiếp tục hiển thị tất cả các nội dung trang của tôi cùng một lúc trong mọi trường hợp. Vì vậy, tôi đã quay lại suy nghĩ và đưa ra cách tiếp cận đơn giản hơn này dựa trên tài liệu của WordPress Codex :
<?php $query = new WP_Query( array( 'pagename' => 'about-me' ) );
while ( $query->have_posts() ) {
$query->the_post();
echo '<h2>'. get_the_title() .'</h2>';
the_content();
}
wp_reset_postdata();
?>
Có lẽ nó vẫn có thể hữu ích cho ai đó ngoài kia; D
Rất nhiều câu trả lời ở đây có vẻ quá phức tạp hoặc không mô tả cách lấy ID trang cụ thể.
$page = get_page_by_path("your-page-slug");
if ($page) {
$page_id = $page->ID;
echo $page_id;
}
Trong phần mô tả ở trên, chúng tôi đã gán đối tượng bài đăng cho $ page - Khi bạn có đối tượng bài đăng, bạn có thể nhận được bất kỳ thông tin nào được mô tả ở đây: https://codex.wordpress.org/Class_Reference/WP_Post
$page->ID
$page->post_status
$page->post_title
và nhiều hơn nữa