cara mendapatkan id halaman dari halaman menggunakan page slug


35

Im cukup baru untuk wordpress dan saya bertanya-tanya apakah saya bisa mendapatkan page iddengan itu slug. Apakah mungkin tolong beri tahu saya.

Jawaban:


47

Gunakan get_page_by_path($page_path):

$page = get_page_by_path( 'about' );
echo get_the_title( $page );

Ini akan mengembalikan objek posting biasa.


Bagaimana jika itu id halaman anak yang saya inginkan?
aneh

1
@ aneh Fungsi hanya mengambil siput halaman, bukan siput induk. Karena siput itu unik, Anda akan selalu mendapatkan hanya satu halaman.
fuxia

3
Terima kasih ini berfungsi dan untuk halaman anak saya harus menavigasi seperti hits$page = get_page_by_path( 'about/child' );
aneh

Hanya untuk memperjelas, get_page_by_pathgunakan post_namebidang secara internal, bukan post_slug.
colefner

Untuk lebih jelasnya, ini menggunakan jalur halaman dan bukan nama halaman, benar? Lalu sebuah halaman bernama "Tentang kami" argumennya harus "tentang-kita", benar? tanpa garis miring awal atau miring?
user658182

16

Saya sudah menggunakan ini ..

function get_id_by_slug($page_slug) {
    $page = get_page_by_path($page_slug);
    if ($page) {
        return $page->ID;
    } else {
        return null;
    }
} 

Semoga ini bisa membantu seseorang.


Mengapa membungkusnya dalam suatu fungsi? get_page_by_pathsudah mengembalikan nol ...
GDY

Karena pertanyaan OP ingin mengembalikan ID, bukan objek halaman.
user1158023

9

Sudah ditanyakan dan dijawab di forum ini. Saya menempelkan kode yang sama dari sana. Gunakan fungsi ini untuk mengambil id halaman.

 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

Saya mengalami masalah dengan jawaban yang dipilih ketika mencoba menggunakan kode beberapa kali di halaman yang sama. Itu terus menampilkan semua konten halaman saya pada waktu yang sama di setiap contoh. Jadi saya kembali berpikir dan menemukan pendekatan yang lebih sederhana ini berdasarkan pada dokumentasi 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();
?>

Mungkin masih bisa membantu seseorang di luar sana; 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;
    }
}
?>

Saya harap saran ini bermanfaat bagi seseorang.


0

Banyak jawaban di sini yang tampaknya terlalu rumit, atau tidak menjelaskan cara mendapatkan ID halaman secara khusus.

            $page = get_page_by_path("your-page-slug");
            if ($page) {
                $page_id =  $page->ID;
                echo $page_id;
            }

Dalam uraian di atas kami telah menetapkan objek posting ke $ halaman - Setelah Anda memiliki objek posting, Anda bisa mendapatkan informasi yang dijelaskan di sini: https://codex.wordpress.org/Class_Reference/WP_Post

            $page->ID
            $page->post_status
            $page->post_title

dan masih banyak lagi

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.