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.

aneh
sumber

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.

fuxia
sumber
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.

Ibnul Hasan
sumber
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; 
  }
Vikas Bhardwaj
sumber
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

Rodrigo D'Agostino
sumber
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.

Dipika
sumber
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

dbmpls
sumber