Functie om waar terug te geven als de huidige pagina onderliggende pagina's heeft

Ik probeer een eenvoudige functie te maken om een ​​"statustest" uit te voeren. Doel is om te testen en te zien of de huidige pagina die wordt bekeken al onderliggende pagina's heeft of niet. Hiermee gebruikt u de lay-out om onderliggende pagina's te wijzigen. De volgende code lijkt te werken, maar helaas geen dobbelstenen.

Iedereen ziet wat ik mis? EDIT : dit staat in WordPress.

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
}

}

0

2 antwoord

0
toegevoegd
hmm ... heb je deze <? PHP $ children = get_pages ('child_of ='. $ post-> ID);?> if (count ($ children)! == 0) {// true code geprobeerd } else {// false code}?>
toegevoegd de auteur techouse, de bron
Leuk om te horen dat het werkt :)
toegevoegd de auteur techouse, de bron
Je zou ook <? PHP $ children = wp_list_pages ('title_li = & child_of ='. $ Post-> ID. '& Echo = 0') kunnen gebruiken; if ($ children) {// true code} else {// false code}?> (van wordpress.org/support/topic/… )
toegevoegd de auteur JimmyPena, de bron
Het probleem met alle voorbeelden die ik heb gevonden (en deze ook) is dat ze veronderstellen dat ik probeer de $ pageid van een statische pagina te krijgen. Wat ik echt wil doen, is gewoon testen of de huidige pagina kinderen heeft en dan terugkeren naar waar of onwaar.
toegevoegd de auteur Brian, de bron
Dat is vrijwel de enige manier waarop ik het heb kunnen doen.
toegevoegd de auteur CookiesForDevo, de bron

Omdat het een beetje arbeidsintensief lijkt om alle onderliggende pagina's te laden om een ​​eenvoudige controle uit te voeren, dacht ik hier vanmorgen vroeg aan:

function has_children($p = null) {
    global $post, $wpdb;
    $pid = ($p) ? $p : $post->post_parent;

    if ($pid) :
        $r = $wpdb->get_row("SELECT ID FROM $wpdb->posts WHERE post_parent = $pid LIMIT 1");
        if ($r) : return true; endif;
    else :
        return false;
    endif;
}

Je kunt het gebruiken als (has_children ()) of het doorgeven als (has_children ($ post-post_parent)) - dit laatste is handig als je get_posts/get_pages gebruikt en niet de globale $ post variabele.

0
toegevoegd