Berfungsi untuk mengembalikan true jika halaman saat ini memiliki halaman anak

8

Saya mencoba membuat fungsi sederhana untuk melakukan "tes status". Tujuannya adalah untuk menguji dan melihat apakah halaman saat ini dilihat memiliki halaman anak atau tidak. Menggunakan ini untuk mengubah tata letak untuk mengakomodasi halaman anak. Kode berikut ini sepertinya bekerja, tetapi sayangnya, tidak ada dadu.

Adakah yang melihat apa yang saya lewatkan?

function is_subpage() {
global $post;                              // load details about this page

if ( is_page() && $post->post_parent ) {   // test to see if the page has a parent
    return true;                                            // return true, confirming there is a parent

} else {                                   // there is no parent so ...
    return false;                          // ... the answer to the question is false
}

}

Brian
sumber

Jawaban:

14

Fungsi Anda di atas menguji apakah suatu halaman adalah halaman anak dari beberapa halaman lain, bukan apakah halaman tersebut memiliki anak.

Anda dapat menguji untuk anak-anak dari halaman saat ini seperti:

function has_children() {
    global $post;

    $children = get_pages( array( 'child_of' => $post->ID ) );
    if( count( $children ) == 0 ) {
        return false;
    } else {
        return true;
    }
}

Bacaan lebih lanjut:

Johannes Pille
sumber
8

Ini adalah versi untuk semua jenis posting, jika Anda menggunakan jenis posting khusus

function has_children($post_ID = null) {
    if ($post_ID === null) {
        global $post;
        $post_ID = $post->ID;
    }
    $query = new WP_Query(array('post_parent' => $post_ID, 'post_type' => 'any'));

    return $query->have_posts();
}
Dmitry Chuba
sumber