WordPress legt automatisch für jeden Beitragstyp ein Archiv an, so auch für die Einsatzberichte. Darin befinden sich alle Einsatzberichte zum seitenweise Durchblättern und es gibt auch ein Archiv für jedes Kalenderjahr.
Die genaue Adresse, unter der das Archiv erreichbar ist, hängt von ein paar Einstellungen auf eurer Seite ab, einen Link dorthin findet ihr aber in den Einstellungen der Einsatzverwaltung unter Permalinks. Ebenso generiert der Shortcode [einsatzjahre] die Links zu den Jahresarchiven.
Nun ist WordPress ursprünglich eine Software für Blogs, daher wird das Archiv in der Blogansicht gezeigt (bei manchen Themes ist das schon im Standard ansprechender gelöst, z.B. durch Kacheln). Für einen schnellen Überblick wäre die tabellarische Darstellung der Einsatzliste aber wahrscheinlich geeigneter.
Da die Darstellung eigentlich im Verantwortungsbereich des Themes liegt, und ich noch keinen Weg gefunden habe, das Plugin die Aufgabe übernehmen zu lassen, beschreibe ich hier nun eine manuelle Anpassung, die ich auf der Webseite meiner örtlichen Feuerwehr einsetze.
Vorbereitung
Für diese Anpassung sind PHP-Kenntnisse nötig, Theme-Dateien sind gerne mal etwas komplexer, da if- und while-Blöcke auch über die Grenzen von ?>
und <?php
hinweg verwendet werden. Grundlagen in HTML und CSS sind ebenso hilfreich, aber nur im Fall von eigenen Anpassungen notwendig.
Da es um eine Anpassung des Themes geht, empfehle ich das Anlegen eines Child-Themes. Auch ist es sinnvoll, die Änderungen erst in einer Testumgebung auszuprobieren, um die Seite nicht lahmzulegen.
Zuerst brauchen wir die Datei archive.php
, welche im Hauptverzeichnis des Parent-Themes liegt. Diese wird dann in das Hauptverzeichnis des Child-Themes kopiert und in archive-einsatz.php
umbenannt. Damit wird diese Datei zur Darstellung der Archive der Einsatzberichte verwendet, alle anderen Archive bleiben unberührt. Grundlage dafür ist die Template Hierarchy.
Sollte es im Hauptverzeichnis des Parent-Themes keine Datei mit dem Namen archive.php
geben, ist das ein Zeichen dafür, dass es etwas umständlicher werden könnte. Ausgehend von der index.php
müsst ihr den Codeteil ausfindig machen, der für die Archive zuständig ist. Ein Blick in den nächsten Abschnitt könnte helfen, damit ihr wisst, wonach ihr suchen müsst.
Schleife raus, Tabelle rein
Ab dieser Stelle wird es bei jedem Theme etwas anders aussehen, denn wir bearbeiten das Innere der archive-einsatz.php
. Es sollte sich eine while-Schleife wie
while ( have_posts() ) {
the_post();
// Weitere Anweisungen zur Ausgabe eines Beitrags
}
finden lassen, auch bekannt als The Loop. Befindet sich diese Schleife in einem if ( have_posts() )
, sollte dieses if/else-Konstrukt beibehalten werden. Die while-Schleife jedoch wird komplett ersetzt, dazu kann der folgende Codeschnipsel als Vorlage dienen.
if ( is_year() ) {
$shownYear = get_query_var( 'year' );
echo do_shortcode( '[einsatzliste jahr=' . esc_html( $shownYear ) . ' options=noHeading]' );
} else {
echo do_shortcode( '[einsatzliste options=noHeading]' );
}
Im hier gezeigten Beispiel wird, sofern ein Jahresarchiv aufgerufen wurde, die Einsatzliste des entsprechenden Jahres angezeigt. Wurde kein Kalenderjahr angegeben, wird die Einsatzliste des aktuellen Jahres angezeigt. Die Shortcodes können mit den bekannten Parametern angepasst werden.
Navigation
Da Archive in der Regel seitenweise angezeigt werden, findet sich nach der while-Schleife meist auch Code für die Navigation zwischen diesen Seiten. Dieser Code sollte ebenso entfernt werden. Um einen Wechsel zwischen den verschiedenen Jahresarchiven zu ermöglichen, kann folgendes Snipppet eingefügt werden, wahlweise natürlich auch oberhalb der Einsatzliste.
// Zeigt Links zu allen Jahresarchiven mit Einsatzberichten an
echo '<p style="width:100%; text-align:center;">' . do_shortcode( '[einsatzjahre]' ) . '</p>';
Das Ergebnis

Hi,
ich habe in meiner archiv.php folgendes stehen und jetzt bin ich mir unsicher wie ich den Code so verändern muss für die Tabellenansicht. Ich hoffe du kannst mir da helfen.
Vielen Dank schon mal im Voraus
Hallo Stephan,
ich fürchte, dass dein Code hier einem Filter von WordPress zum Opfer gefallen ist. Zumindest befinden sich Lücken darin, ich habe versucht, das mal wieder zu rekonstruieren.
Das Theme verwendet die alternative Schreibweise der while-Schleife. Dabei wird der Schleifenkörper nicht von geschweiften Klammern eingefasst, sondern mit
while (Bedingung) :
begonnen und mitendwhile;
beendet. Also alles vonwhile
bisendwhile
mit dem obigen Code-Vorschlag ersetzen.