child pages auf einer Unterseite anzeigen

Parent page mit child pages show siblings on child pages
Seite mit Unterseiten, die wieder Unterseiten anzeigen

Du hast jede Menge an statischen Seiten, die auch Unterseiten – also child pages- haben. Gerne tätst Du die auch sinnvoll intern verlinken. Du möchtest alle Unterseiten einer Parent Seite anzeigen, aber nicht die aktuelle Unterseite. – Damits gefunden wird das ganze auch mit englischen Bezeichnungen. Child pages auf einer parent Seite anzeigen, aber nicht die aktuelle child page.

)

Child Pages auf einer Unterseite mit wp_list_pages

Ich bringe hier eine Lösung, die den template tag wp_list_pages nutzt. Zuerst hole ich mir die ID er aktuellen Seite, dann prüfe ich, ob es überhaupt child pages gibt, danach gestalte ich die Ausgabe und statt der IDs trage ich die nötigen Variablen ein.

child pages auf parent page anzeigen, ohne die aktuelle child page


<?php
global $wp_query;
if($post->post_type == 'page'){
        $current=$post->ID;
        }
if( empty($wp_query->post->post_parent) ) {
$parent = $wp_query->post->ID;
} else {
$parent = $wp_query->post->post_parent;
}
echo'<p class="related">...weitere Artikel zum Thema:</p><ul class="related">';
wp_list_pages("exclude=$current&title_li=&child_of=$parent");
echo'</ul>';
?>

das da gibt mir die ID der aktuellen Seite zurück


if($post->post_type == 'page'){
        $current=$post->ID;
        }

das da prüft, ob es Unterseiten gibt -also es prüft eigentlich, ob die Seite eine Elternseite /parent hat.


if( empty($wp_query->post->post_parent) ) {
$parent = $wp_query->post->ID;
} else {
$parent = $wp_query->post->post_parent;
}

echo gibt immer etwas zurück, und zwar genauso wie es da steht ;).

der Rest ist wp_list_pages und dazu gibts hier einige Artikeln.

Nun kannst auch Du Unterseiten auf Unterseiten ausgeben, ohne die aktuelle Unterseite (current) nochmals anzuzeigen.

Die Elternseite auch mit anzeigen

Magst Du auch die übergeordnete Elternseite anzeigen, dann kannst du obigen Code so abändern:

....
echo'<p class="related">...weitere Artikel zum Thema:</p><ul class="related">';
if ($parent != $current=$post->ID) {
wp_list_pages("include=$parent&title_li=&depth=0");
}
wp_list_pages("exclude=$current&title_li=&child_of=$parent");
echo'</ul>';

....


Dieser Code zeigt die Elternseite nur an, wenn sie nicht die aufgerufene (current) Seite ist.

Gestaltung per CSS

Zeigst Du auch die Elternseite an, kannst Du mit den CSS Klassen current_page_ancestor und /oder current_page_parent die Elternseite speziell hervorheben.

weitere Artikel zum Thema ChildPages, die Unterseiten

  1. child pages auf einer Unterseite anzeigen
  2. Childpages – die Unterseiten beim Klick auf die Hauptseite anzeigen
  3. Wie du eine Single Page mit Seiten und Unterseiten realisieren kannst

Artikelhistorie:
Erstveröffentlichung am 14. April 2009 10:32,
geändert am 14.März 2013
edit: 24.10.2014 Code kontrolliert

Wie immer freue ich mich auch über andere Lösungen oder Verbesserungen. Danke!

23

23 Beiträge zu “child pages auf einer Unterseite anzeigen

  1. Kommentar Autor
    René
    Kommentar

    Hallo,
    danke erstmal für den Code, funktioniert auch soweit. Ich habe noch ein kleines Problem und zwar, wenn ich jetzt 2 Unterseiten ausgeben lasse und dann eine Unterseite aufrufe, verschwindet der Menüpunkt der aktuellen (aufgerufenen) Seite und nur der Menüpunkt der anderen Unterseite ist noch zu sehen. Wie kann ich das beheben? Also wie kann ich alle Unterseiten dauerhaft anzeigen lassen? Wenn das nicht möglich sein sollte, kann ich denn vor den Unterseiten nochmals die Jeweilige Überseite anzeigen lassen aber das auch nur wenn Unterseiten verfügbar sind? Wäre dankbar für Hilfe…

    mfg René

  2. Kommentar Autor
    Monika
    Kommentar

    Hallo René

    ich habe es extra so gemacht, dass die aktuelle Seite nicht verlinkt ist, weils dann ja doppeltmoppelt -wenn Du dies aber so haben magst, dann lösche bei

    wp list pages das da

    
    exclude=$current&
    
    
  3. Kommentar Autor
    Simon
    Kommentar

    erstmal vielen dank für den code, prima sache :-)

    gibt es denn auch eine möglichkeit, die abfrage umzudrehen? also zu fragen, ob es unterseiten gibt. wenn ja, zeig welche an, wenn nein, spare dir den part mit dem .

    hintergrund: ich will den code für die ausgabe einer sub-navi verwenden und bekomme bei seiten ohne unterseiten eine leere -Liste…

    vielen dank im voraus :-)

  4. Kommentar Autor
    Simon
    Kommentar

    Tsss… Du bist echt super!

    Freue dich auf ein kleines Geschenk von deiner Amazon-Wunschliste :-)

  5. Ping fast privat

  6. Kommentar Autor
    Ricarda
    Kommentar

    Wie ist es wenn ich die Unterseiten von Unterseiten anzeigen lassen möchte?

    Also:

    Hauptseite:
    –Unterseite
    —-Unterseite
    —-Unterseite

    und dabei die Links zu den Unterseiten 2. Grades auf denen 1. Grades angezeigt werden sollen?

  7. Kommentar Autor
    Monika
    Kommentar

    Du müßtest Dir immer für die Unterseiten ,die noch UnterUnterseiten haben ein eigens template machen und dies dann rechts beim Erstellen auswählen:

    
    
    <?php
        $pageChildren = $wpdb->get_results("
            SELECT *
            FROM $wpdb->posts
            WHERE post_parent = ".$post->ID."
            AND post_type = 'page'
            ORDER BY menu_order
        ", 'OBJECT');
        if ( $pageChildren ) :  foreach ( $pageChildren as $post ) :  setup_postdata( $post ); ?>
    
    Ausgabe
    
    <?php endforeach;  endif;?>
    
    

    dies hat mit obigen nicht soviel zu tun, kommt aber drauf an was Du auf der Hauptseite anzeigen magst

    lg

  8. Kommentar Autor
    Ricarda
    Kommentar

    Danke für die schnelle Antwort.
    Werd ich heute mal ausprobieren :)

  9. Kommentar Autor
    Marko
    Kommentar

    Vielen herzlichen Dank für diesen Codeschnipsel! Hat sofort prima funktioniert. Kompliment. Was muss ich aber ändern, damit in der dritten Unterseite die Elternmenüpunkte der zweiten Ebene nicht verschwinden, sondern stehenbleiben? Vielen Dank schon einmal für die Hilfe.

  10. Kommentar Autor
    Monika
    Kommentar

    Marko meinst Du den im Artikel? wenn ja dann versuch für dein weiteres Problem den Code, den ich Ricarda geantwortet habe

  11. Kommentar Autor
    Marko
    Kommentar

    Oh sorry, hab ich vielleicht nicht richtig formuliert. Ich versuch’s noch einmal: sobald ich die dritte Unterseitenebene erreicht habe, stehen dort nur noch die Schwesternelemente, die Elternmenüpunkte sind verschwunden. Jetzt meine Frage, ob man die Funktion so schreiben kann, das die Elternelemente auch in der dritten Unterseitenebene noch zu sehen sind?

  12. Kommentar Autor
    Monika
    Kommentar

    Hi Marko an und für sich dürften da niemals die parents stehen, sondern auf der parentSeite die Kinder und 1 Artikel der Seite

    darum verwies ich dich ja auf den Code Nr 8

    lg

  13. Kommentar Autor
    Zvent
    Kommentar

    Servus, habe da noch ein ganz anderes Problem. Ich möchte auf den Unterseiten einen Link zur Elternseite haben. Ich hab jetzt überall gesucht und finde keine Lösung.

    die subpages anzuzeigen ist ja kein problem, aber dazu noch nen link zur übergeordneten seite zu generieren bringt mich am rande des wahnsinns.

    ich müsste für die unterseiten jeweils ein template erstellen, in dem ich den link manuell für jede überseite einfüge, das klappt. das such ich auch nicht. ;) wer kann helfen?

  14. Kommentar Autor
    Niggiman
    Kommentar

    Hallo, ich habe mal eine kleine frage! ich habe Deinen Codeschnippsel bei mir eingebunden! :) allerdings noch ein problem:

    ich hab seite A.
    seite B und seite C sind unterseiten von A.
    B hat die unterseiten D und F.

    wenn ich jetzt seite C anklicke zeigt, wird neben seite B auch deren unterseiten D und F angezeigt.

    ist es möglcih, dass beim klick auf seite C nur B (also ohne deren unterseiten) angezeigt wird?

    damit wäre mir sehr geholfen!

  15. Kommentar Autor
    jotari
    Kommentar

    Danke für diesen sehr nützlichen Beitrag! Der Code funktioniert tadellos. Was mich weiterhin interessieren würde: Gibt es eine Möglichkeit,

    a) die Anzahl der via wp_list_pages-Funktion ausgegebenen Seiten zu begrenzen (zum Beispiel auf 5 Seiten)
    b) diese 5 Seiten zufällig auszuwählen?

    Das nämlich wäre perfekt!

  16. Kommentar Autor
    jotari
    Kommentar

    Hallo Monika,

    Danke für deine schnelle Antwort! Ja, das hilft mir weiter.

    Besten Dank nochmals und viele Grüße

  17. Kommentar Autor
    Heinz
    Kommentar

    Genau das, was ich gesucht habe, denn bei WP MU/BuddyPress werden Unterseiten im Hauptmenü nicht angezeigt (ausgeklappt) – zumindest nicht im Theme „Firmasite“.
    Habe Deinen Code in der page.php eingefügt.
    Nun werden zumindest nach Aufruf der Seite die Unterseiten angezeigt.
    Vielen Dank!

  18. Kommentar Autor
    Heinz
    Kommentar

    … uuups … ich muß mich korrigieren, denn „firmasite“ bietet sehr wohl die Möglichkeit Unterseiten (anscheinend mindestens 4 Stufen) an eine Hauptseite anzuhängen. Das fiel mir nun beim Sortieren auf (war vorher nicht nötig ;-) ).
    Habe nun dank Deines Codes doppelten Mehrwert.

  19. Kommentar Autor
    chris
    Kommentar

    hallo, Monika,
    gerade habe ich diesen Artikel auf deinerSite gefunden und bin über den Passus Css-Gestaltung gestolpert. Nun habe fast wieder ein wenig Hoffnung auf Hilfe bei meinem CSS-Problem … Ich vermute genau da drückt mein Submenue der Schuh.

    Also, es geht um das menue auf der Seite muenster.org/foerder-studiams/Projekte/Austausch-mit-ausländischen-Unis .
    wie du siehst, sind die 1. und 3. Submenuenamen Studia-Chor und Wunschgrosseltern, farblich zu hell, kaum zu erkennen. Das möchte ich ändern. könntest du mir angeben, welches CSS-Element ich neu einfügen bzw. ändern muss?
    ich habe den Quellcode bereits mit firebug analysiert, konnte aber bei Änderung der vorhandenen CSS-Elemente keine Lösung finden. Vielleicht muss ich css für nicht aktive submenuetitel hinzufügen (???) In diesen Untiefen kenne ich mich aber noch nicht aus. Auch habe ich in verschiedenen Foren gefragt, das führte aber nicht zur Problemlösung.

    könntest Du mir einen Tipp geben, was zu tun ist, damit das submenue endlich ansehnlicher wird?
    Danke!
    Chris

  20. Kommentar Autor
    Monika
    Kommentar

    Chris

    glaube ich ich fand auf die Schnelle auch noch keine CSS Klasse die das steuert…
    ich vermute du musst einfach das ganze Style nach #fff durchsuchen und dort wo dann „color“ dabei steht das ist eine Schriftfarbe…. ausprobieren…
    hast du da Plugins auch aktiv für das Menü?