Funktion zur Rückgabe von true, wenn die aktuelle Seite untergeordnete Seiten enthält

8

Ich versuche eine einfache Funktion zu erstellen, um einen "Statustest" durchzuführen. Ziel ist es zu testen, ob die aktuell angezeigte Seite untergeordnete Seiten enthält oder nicht. Verwenden Sie diese Option, um das Layout für untergeordnete Seiten zu ändern. Der folgende Code scheint zu funktionieren, aber leider keine Würfel.

Hat jemand gesehen, was ich vermisse?

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
quelle

Antworten:

13

Ihre obige Funktion prüft , ob eine Seite ist ein Kind Seite von einer anderen Seite, nicht , ob es Kinder hat.

Sie können auf Kinder der aktuellen Seite wie folgt testen:

function has_children() {
    global $post;

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

Weiterführende Literatur:

Johannes Pille
quelle
7

Hier ist die Version für jeden Beitragstyp, falls Sie einen benutzerdefinierten Beitragstyp verwenden

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
quelle