Cách lấy id trang của một trang bằng slug trang


35

Tôi khá mới với wordpress và tôi đã tự hỏi liệu tôi có thể làm được page idvới nó không slug. Có thể xin vui lòng cho tôi biết.

Câu trả lời:


47

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.


Điều gì sẽ xảy ra nếu đó là id trang con tôi muốn?
quái đản

1
@freaky Hàm chỉ lấy sên trang chứ không phải sên cha. Vì sên là duy nhất, bạn sẽ luôn chỉ có một trang.
fuxia

3
Cảm ơn bạn nó đang hoạt động và đối với trang trẻ em tôi đã phải điều hướng như các lượt truy cập$page = get_page_by_path( 'about/child' );
kỳ quái

Chỉ cần làm rõ, get_page_by_pathsử dụng các post_namelĩnh vực trong nội bộ, không post_slug.
colefner

Để rõ ràng, điều này sử dụng đường dẫn trang chứ không phải tên trang, đúng không? Sau đó, một trang có tên "Giới thiệu về chúng tôi", đối số nên là "về chúng tôi", đúng không? không có dấu gạch chéo bắt đầu hay dấu?
dùng658182

16

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 đó.


Tại sao gói nó trong một chức năng? get_page_by_pathđã trả về null từ
GDY

Bởi vì câu hỏi OP muốn trả về ID, không phải đối tượng trang.
dùng1158023

9

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; 
  }

3

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


0
<?php  function get_page_ID_by_slug( $slug ) {
    $page = get_page_by_path( $slug );
    if ( $page ) {
        return (int) $page->ID;
    }
    else {
        return null;
    }
}
?>

Tôi hy vọng đề nghị này là hữu ích cho một ai đó.


0

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.