Benutzerdefinierte Seitenvorlage als Übersichtseite
für statische Seiten erstellen
Die neusten Beiträge werden im Allgemeinen auf der Startseite ausgegeben und alle erstellten Beiträge in den Kategorien sowie in den Archiven gelistet. Diese Auflistung und Archivierung bezieht sich jedoch nur auf Beiträge, nicht hingegen auf statische Seiten, es sei denn, bei der Entwicklung eines Themes wurde eine Übersicht berücksichtigt, in der statische Seiten gelistet werden.
Falls im verwendeten Theme noch nicht vorhanden, lässt sich so eine Übersicht, in der nur statische Seiten gelistet werden, jedoch leicht realisieren, in dem eine benutzerdefinierte Seitenvorlage für diese Aufgabe erstellt wird.
Übersicht, Varianten und Code-Listings:
- Benutzerdefinierte Seitenvorlagen erstellen
- Eine Seitenvorlage mit Formular für Benutzereingaben (mit Auswertung der Eingaben)
- Formular als Auswahlliste mit Radio-Buttons (als Demo)
- Seitenvorlage zum Auflisten von statischen Seiten (als Übersichtsseite)
- Auflistung von statischen Seiten (Beispielseite)
Im Beispiel auf dieser Seite wurde ein neues Objekt der Klasse WP_Query instanziiert und dieser Instanz ein Array mit Eigenschaften und Werten zugewiesen. Im Einzelnen enhält das Array die Eigenschaft post_type mit dem Wert page und die Eigenschaft posts_per_page mit dem Wert 10. Oder einfacher, dem Objekt der Klasse WP_Query wurden die entsprechenden Eigenschaften und Werte übergeben, um 10 Ergebnisse vom Typ Page (statische Seiten) als Ergebnis zu liefern.
Weitere Einzelheiten
Innerhalb der Ausgabeschleife (The Loop) erfolgt eine Abfrage der ID. Diese Abfrage mit $post->ID ist zwar nicht zwangsläufig erforderlich, verhindert jedoch, dass die Seite sich selbst als Ergebnis mit auflistet. In Klammern muss dabei die Post-ID der Seite eingefügt werden, der die benutzerdefinierte Seitenvorlage zugewiesen wurde.
Um den Titel auszugeben und bei der Ausgabe auf die zugehörige Seite zu verlinken, werden im Listing die WP-Funktionen the_permalink und the_title verwendet. Dabei werden die restlichen HTML-Zeichen für einen vollständigen Link als Argumente für $before = ” und $after = ” an die Funktion the_title übergeben.
Wurde innerhalb des Content der More-Tag <!--more-->
benutzt und soll mit der WP Funktion the_content der Inhalt nur bis zu diesem Quicktag ausgegeben werden, gefolgt von einem Link zum Weiterlesen, muss zuvor der Variablen $more der Wert 0 zugewiesen werden.
Seitenvorlage mit einem Link zum Weiterlesen (page-uebersicht.php):
<?php /** * Template Name: Statische-Seiten Uebersicht * Description: Datei speichern unter page-uebersicht.php */ get_header(); ?> <div id="primary" class="site-content"> <div id="content" role="main"> <?php $args = array("posts_per_page" => 10, "post_type" => "page"); $qobj = new WP_Query($args); if ($qobj->have_posts()): while ($qobj->have_posts()) : $qobj->the_post(); if ($post->ID != 577): ?> <article> <header class="entry-header"> <h1 class="entry-title"><a href="<?php the_permalink(); the_title('">', '</a>'); ?></h1> </header> <div class="entry-content"><?php $more = 0; the_content(__("Weiterlesen <span class=\"meta-nav\">→</span>")); ?> </div> </article> <?php endif; endwhile; endif; wp_reset_query(); ?> </div> </div> <?php get_sidebar(); ?> <?php get_footer(); ?>
Anstelle von the_content kann mit der WP-Funktion the_excerpt ein Auszug wiedergeben werden. Im nachfolgenden Beispiel wurden die alternativen Funktionen get_permalink, get_the_title und get_the_excerpt verwendet. Die ersten beiden Funktionen können außerhalb und innerhalb der Ausgabeschleife ‘The Loop’ verwendet werden, wobei bei einer Verwendung außerhalb der Ausgabeschleife eine ID anzugeben ist. get_the_excerpt kann hingegen nur innerhalb einer Ausgabeschleife verwendet werden.
Für die Verwendung der get-Alternativen spricht, dass die Ausgabe zusätzlich mit esc_html() abgesichert werden kann. Die WP-Funktion esc_html entspricht in diesem Zusammenhang der PHP-Funktion htmlspecialchars in Verbindung mit der Konstanten ENT_QUOTES und dem Parameter double_encode mit dem booleschen Wert false, wobei die Schreibweise einfacher zu handhaben ist.
Seitenvorlage mit Auszug (Description):
... ?> <article> <header class="entry-header"> <h1 class="entry-title"><a href="<?php echo esc_html(get_permalink()); echo '">'.esc_html(get_the_title()).'</a>'; ?></h1> </header> <div class="entry-content"><?php echo esc_html(get_the_excerpt())."\n"; ?> </div> </article> ...
Mehr zum Thema benutzerdefinierte Seitenvorlagen unter:
Benutzerdefinierte Seitenvorlagen | Seitenvorlage mit Formular « zurück