Ein täglicher Begleiter für Webworker

WordPress Teaser für Unterseiten einer Seite

Kategorie: web-development

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.

Über den Autor Viktor Dite

Ich, Viktor Dite bin Shopadmin, Webdeveloper und ein Geek, der das Auge fürs Alltagstaugliche nicht verlieren möchte. Hier im Blog versuche ich beide Welten unter einen Hut zu bringen, so dass auch nicht “Digital Residents” die Möglichkeit bekommen, das Meiste aus der digitalen Welt herauszuholen.

Gefällt Dir der Beitrag?

Wenn Dir der Beitrag gefällt, freue ich mich über jedes Share oder ein Kommentar!

Das könnte Dich auch interessieren:



4 Blog Kommentare

  1. Kai:

    Geht bei mir nicht :(
    Zeigt immer nur die Geschwister an, nicht die Kinder der Seite

  2. Viktor Dite:

    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

  3. Viktor Dite:

    grad wieder benutzt. Funktioniert einwandfrei ?!

  4. Wordpress als CMS voll ausreizen » miZine:

    [...] 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 [...]