Childpages – die Unterseiten beim Klick auf die Hauptseite anzeigen

Unterseiten auf der Hauptseit anzeigen Child pages on parent page
Unterseiten auf der Hauptseit anzeigen Child pages on parent page

Du magst beim Klick auf die Hauptseite die Unterseiten anzeigen. Nützlich ist sowas für:

  1. die Navigation
  2. Verlinkung der Unterseiten mitten im Inhalt der Seite mit einem Shortcode
  3. die Homepage, das Portfolio etc.
  4. die interne Verlinkung oder auch ähnliche Artikel – also ähnliche Seiten, eventuell mit Thumbnail und kurzem Auszug

Und vielleicht fallen dir auch noch Anwendungsmöglichkeiten ein.

Ich zeige ein einfaches Codebeispiel auf und dann stelle ich Plugins vor, die dies auch können. Am Ende des Beitrags findest du noch weitere hilfreiche Tipps.

1. Unterseiten als Liste auf der Hauptseite anzeigen

einfache Auflistung der Unterseiten
einfache Auflistung der Unterseiten

Dies kannst du für die Sidebar nutzen, als einfache Auflistung aller Unterseiten auf der Hauptseite am Ende des Inhalts.

<ul>
  <?php
  global $id;
  global $post;
  $navpages = wp_list_pages("title_li=&child_of=$id&depth=1&echo=0");
  if($navpages){
     echo $navpages;
  } else {
     wp_list_pages("title_li=&child_of=".$post->post_parent);
  }
  ?>
</ul>

Magst du die Unterseiten auch auf allen anderen Unterseiten anzeigen, ohne dabei die aktuelle Seite anzuzeigen, dann findest du hier eine Lösung.


Child Pages Shortcode Plugin

Child Pages Shortcode Plugin
Child Pages Shortcode Plugin

Child Pages Shortcode von Takayuki Miyauchi. Takayuki bietet seit 2007 Plugins für WordPress an und bis dato war ich immer noch von seiner Arbeit begeistert. Er ist auch auf Github zu finden: miya0001.

Du kannst mit diesem Plugin die Child-Pages der aktuellen Seite anzeigen.

Beispiele für diesen Shortcode:

[child_pages width="49%"]

Zeigt die Unterseiten oder Child-Pages mit einer Breite von 49% von „content-width“ an.

[child_pages width="49%" disabled_excerpt_filters="true"]

Achtung hier ist ein Tippfehler bei der Beschreibung. Es muss disabled heißen und nicht disable.

Allerdings ist die Höhe der Boxen fest vorgegeben, so erscheint zwar kein Textauszug, aber der Platz dafür wird freigehalten.

Auf einer Child-Page werden die anderen Unterseiten der Parent-Seite nicht angezeigt. Sehr wohl aber die Unterseiten einer Unterseite.

Das Plugin Child-Pages-Shortcode liefert je eine CSS und JS Datei.

List Pages Shortcode Plugin

List Pages Shortcode Plugin
List Pages Shortcode Plugin

List-Pages-Shortcode
ist von Ben Huson und Aaron Guitar.

Du kannst mit diesem Plugin neben einer Auflistung aller Seiten auch die Unterseiten anzeigen lassen.

Shortcodebeispiele

[child-pages child_of="10"]

Dies zeigt die Unterseiten der Seite mit der ID 10 an.

 [child-pages depth="1"]

Zeigt die Unterseiten der ersten Ebene an, also keine Enkerlseiten.

Das Plugin List Page Shortcodes hat keine eigene CSS Datei. Das gibt dir die Freiheit alles so zu gestalten wie du magst oder wie dein Theme eine Liste vorgibt.

Die wichtigere CSS Klasse ist list-pages-shortcode.

Weiters habe ich folgende Plugins getestet

Chris Hurst bietet das Plugin Children Excerpt Shortcode.

Dieses Plugin liefert derzeit noch einen Fehler und eine Warnung. Ich habe beides im Supportforum gemeldet.

Unabhängig davon linkt es auf die Unterseite, zeigt einen kurzen Textauszug und einen Read More Link. Die einzelnen Beiträgen sind mit hr voneinander getrennt.

Ebenfalls von Chris Hurst ist Children-Content-Shortcode. Dieses Plugin liefert unter WP 4.01 einen Error 500 im Frontend.

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

Artikelversionen:
Dieser Beitrag ist bald sechs Jahre alt und hat einiges an Revisionen hinter sich und ich vermute das war heute nicht die letzte. :-)
Erstveröffentlichung am: 16.01.2009 @ 09:24
edit am: 24.6.09 WP 2.8 ist anders
edit am: 24.10.2014 Code kontrolliert -stimmt immer noch alles
Neufassung am 27.11.2014,Pluginbeispiele ergänzt

Viel Freud mit dem Quick Tipp und wars hilfreich freu ich mich über ein +1
23

23 Beiträge zu “Childpages – die Unterseiten beim Klick auf die Hauptseite anzeigen

  1. Kommentar Autor
    Joachim
    Kommentar

    Hallo,

    vielen Dank für den Tipp, werde es gleich mal testen.

    Grüße aus dem Schwarzwald
    Joachim

  2. Kommentar Autor
    Benno
    Kommentar

    hallo,
    hab gerade Versucht das ganze in ein text Widget zu packen, PHP_Exec ist auch installiert.
    Nur leider Zeigt er mir im Widget gar nichts an.
    Benutze WP 2.8 funktioniert es deshalb nicht?

    Vielen Dank
    Gruß

  3. Kommentar Autor
    Benno
    Kommentar

    na das ging ja flott!
    Jedoch bilde ich mir ein dass es nicht ganz richtig ist.

    es werden immer noch alle seiten angezeigt, also Parent + Child!
    Sobald ich dann auf eine Child Seite gehe verschwinden die paren seiten!!

    ich hab es hier mal auf meiner seite (die untere navigation)

    Danke Gruß
    Benno

  4. Kommentar Autor
    Monika
    Kommentar

    Hi Benno das liegt nicht an den Code da oben , sondern beim template tag wp_list_pages
    schreibe da dazu

    depth=1

    mit einem &verbinden nicht vergessen

  5. Kommentar Autor
    Benno
    Kommentar

    Sorry, aber ich glaub ich stehe gerade auf dem schlauch …

    wenn ich im template tag (sidebar.php) wp_list_pages bearbeite dann hat es doch gar keine Auswirkung wenn ich widgets verwende, oder!?

    Vielleicht könntest du mir nochmal helfen!!

    Mein code von der sidebar:
    <?php wp_list_pages(‚title_li=Pages‘); ?>

  6. Kommentar Autor
    Monika
    Kommentar

    ah! ok…

    dann lösch das Seitenwidget nimm ein Textwidget und gib da ein

    <?php wp_list_pages(‚depth=1&title_li=Pages‘); ?>

    denn Exec PHP läuft ja sowieso

    lg

  7. Kommentar Autor
    Marcel
    Kommentar

    hallo,

    genau das habe ich gesucht…
    leider gibt es bei mir in der sidebar keine wp_list_pages …
    Was kann man da machen?

    Bei mir ist es auch so, das auf allen Menüseiten rechts in der Sidebar die navi inkl. unternavi angezeigt werden.
    erst wenn ich auf eine Child Seite gehe, werden korret nur die Child Seitenlinks angezeigt.

  8. Kommentar Autor
    Marcel
    Kommentar

    Ah, habe im textwidget eingegeben:

    post_parent);
    }
    ?>

    Jetzt wird nur noch das parent Menü angezeigt und wenn ich darauf gehe, nur die child Seiten.

    Ist es möglich, das dieses Textwidget nur angezeigt wird, wenn man auf eine Seite ist, wo es Child Seiten gibt, so das dieses Menü zB. auf der Startseite ausgeblendet ist und nur bei Bedarf bei den bestimmten Seiten angezeigt wird.

    So nimmt das Widget, gerade auf der Startseite in der Sidbar Platz weg.

  9. Kommentar Autor
    Marcel
    Kommentar

    Hallo,

    habe noch ein bischen rumprobiert aber ohne Erfolg.
    Geht das überhaupt, das das Menü erst angezeigt wird, wenn man in der Navi auf die parentsite klickt?

  10. Kommentar Autor
    Monika
    Kommentar

    Marcel ich nutz das genauso -ich weiß nicht wieso es bei Dir nicht geht

    ehrlich

  11. Kommentar Autor
    Marcel
    Kommentar

    Im Endeffekt war es doch ganz einfach :-)

    Einfach den 2. teil der Schleife/Bedingung weglassen …

    else {
    wp_list_pages(„title_li=&child_of=“.$post->post_parent);
    }

    Das soll ja nicht angezeigt werden.

    Grüße
    Marcel

  12. Kommentar Autor
    Marcel
    Kommentar

    Ok, so einfach wohl doch nicht, dann wenn man auf einer Unterseite (Child) ist, wird das Menü nicht mehr angezeigt.

    Kann man da vielleicht auch eine Bedingung formulieren, das das Menü mit den Links zu den Unterseiten weiter angezeigt wird?!

  13. Kommentar Autor
    Monika
    Kommentar

    ok vielleicht habe ich es jetzt verstanden..

    <?php
    $children='';
    if($post->post_parent) {
      $children = wp_list_pages("title_li=&include=".$post->post_parent ."&echo=0");
      $children .= wp_list_pages("title_li=&child_of=".$post->post_parent ."&echo=0");
    } else {
      $children = wp_list_pages("title_li=&include=".$post->ID ."&echo=0");
      $children .= wp_list_pages("title_li=&child_of=".$post->ID ."&echo=0");
    }
    if ($children) { ?>
      <ul>
      <?php echo $children; ?>
      </ul>
    <?php
    }
    ?>
    

    lg

  14. Kommentar Autor
    Marcel
    Kommentar

    Danke für die Hilfe aber jetzt wird das Menü der statischen Seiten 2x komplett inkl. Unterseiten rechts in der Sidebar angezeigt.

  15. Kommentar Autor
    Monika
    Kommentar

    Marcel muss ich passen, bei mir tuts es, vielleicht zeigst du es ja auch zweimal an ;)

  16. Kommentar Autor
    Marcel
    Kommentar

    Also ich habe es nochmal probiert und bei einigen Seiten geht es, bei anderen nicht.
    Wahrscheinlich hat WordPress ein Problem wenn man die schon vorhandene statische Seite „Eine Seite“ umbennent und darunter Unterseiten erstellt.
    Dann geht es anscheinend nicht.
    Dann ein problem, welches man unter History sehen kann.
    Wenn man dann die Jahre anklickt, wird nur die Seite von History angezeigt.

    Und wie gesagt, das alles soll nicht auf der startseite angezeigt werden.

  17. Kommentar Autor
    Marcel
    Kommentar

    Um es jetzt mal abzuschließen … der Code vom artikel funktioniert ja soweit wunderbar.
    Nur soll das alles, gerade wenn noch mehr Menüpunkte hinzukommen, einfach nicht auf der Startseite angezeigt werden.
    Kann man da was über den ‚Exclude‘ befehl machen?

  18. Kommentar Autor
    Frank-Andre Thies
    Kommentar

    Danke für diesen Artikel. Ich versuche gerade anstelle einer Liste der Subpages eine automatische Integration des Headers, des Datums, des Links und des Auszugstextes aller direkten Subpages einer statischen Seite zu erreichen. Formattechnisch wie bei der Anzeige einer Category.

    Weiss jemand, ob es hierfür eine „fertige“ Lösung (function) gibt oder ob ich selber eine DB-Abfrage generieren muss?

    Danke

    Frank-Andre

  19. Kommentar Autor
    Frank-Andre Thies
    Kommentar

    Super, Danke, genau das ist es. Den Kommentar hatte ich leider übersehen.

    Nochmals Danke, sind übrigens einige gute Tipps auf Deiner Website zu finden!