WordPress Teaser für Unterseiten einer Seite
Es gibt Aufgaben, für die ist die Artikel / Blog Ausgabe von WordPress ggü. den WordPress CMS Seiten zu sehr unterlegen. Dazu gehört bspw. eine tiefere hierarchische Verschachtelung von Inhalten. Mit der Kategorisierung der Artikel lässt sich nur eine flache Hierarchie der Tiefe 2 realisieren. Mit WordPress CMS Seiten hingegen theoretisch unendlich tief.
Die WordPress CMS Seiten haben jedoch normalerweise den dummen Nachteil, dass jegliche Unterseiten nicht automatisch als Teaser in der jeweiligen Ebene angezeigt werden – wie das in den normalen Kategorien der Fall ist. Das lässt sich allerdings relativ einfach mit Hilfe von wpSEO ändern!
WordPress Unterseiten wie Artikel mit Teasern anzeigen lassen
Dazu einfach folgenden Code an die passende Stelle des pages.php Templates einfügen (z.B. unter die Auflistung des eigentlichen Contents der Seite):
<?php
/** Creating teaser of all childs of depth = 1
Thisfor you have to set array('hierarchical' => 0,
'parent' => $post->ID) in get_pages()
Using WP_SEO for getting teaser excerpt
Author: Viktor Dite
**/
$pageChildren = get_pages(array('child_of'=> $post->ID,
'hierarchical' => 0, 'parent' => $post->ID));
if ( $pageChildren ) {
foreach ( $pageChildren as $pageChild ) {
echo '<a href="' . get_permalink($pageChild->ID) . '">
<article id="post-<?php the_ID(); ?>" class="product_list">
<header class="entry-header">
<h2 class="entry-title">'.
$pageChild->post_title.'</h2>
</header>
<div class="entry-content">';
if (has_post_thumbnail($pageChild->ID)){
echo get_the_post_thumbnail($pageChild->ID, 'large');
}
if(strlen($description = get_post_meta($pageChild->ID,
'_wpseo_edit_description', true))>5)
{
echo '<p>'.$description.'</p> ';
}else{
echo '<p>Leider keine Kurzbeschreibung
vorhanden</p>';
}
echo '</div>
<div class="clearleft"></div>
</article>
</a>';
}//foreach
}//if $pageChildren
?>
Zur Erklärung
$pageChildren = get_pages(array('child_of'=> $post->ID,
'hierarchical' => 0, 'parent' => $post->ID));
get_pages() holt mit dem Parameter child_of alle Unterseiten der aktuellen Seite. 'hierarchical' => 0, 'parent' => $post->ID bewirken zusammen, dass nur eine Ebene (die direkten Nachfolger (Siblings) in der Hierarchie in die Ausgabe kommen. Werden diese Optionen nicht angegeben, kommen alle Unterseiten, egal welcher Tiefe, als Teaser mit in die Ausgabe!
Der Rest des Codes holt sich dann einfach jedes Element und packt es in ein article Element, dass nur noch per CSS passend formatiert werden muss. Die Description des Teasers liefert dabei das manuell gesetzte Description Metatag von wpSEO, da WordPress von Haus aus kein “Auszug” Feld bei den Seiten mitliefert.
Wenn Dir der Beitrag gefällt, freue ich mich über jedes Share oder ein Kommentar!

Kommentar geschrieben am 07.04.2012
Geht bei mir nicht :(
Zeigt immer nur die Geschwister an, nicht die Kinder der Seite
Kommentar geschrieben am 07.04.2012
Bist Du Dir sicher? Allein der Aufruf
$pageChildren = get_pages(array(‘child_of’=> $post->ID,
‘hierarchical’ => 0, ‘parent’ => $post->ID));
schließt dies eigentlich aus, weil dort das child_of aktuelle Seite Array geholt wird
Kommentar geschrieben am 09.07.2012
grad wieder benutzt. Funktioniert einwandfrei ?!
Kommentar geschrieben am 01.05.2013
[...] wäre da die Auflistung aller Unterseiten (Kinder) einer Seite. Sogenannte Teaser für Unterseiten. Soetwas unterstützt kaum ein Template. /* */ » Kategorie "web-development" als RSS Feed [...]