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.

blogansicht
Die Blogansicht ist für den schnellen Überblick nicht geeignet

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.

Da es um eine Anpassung des Themes geht, empfehle ich das Anlegen eines Child-Themes, wie es in diesem Blogpost beschrieben ist. Auch ist es sinnvoll, die Änderungen erst in einer Testumgebung auszuprobieren, um die Seite nicht lahmzulegen.

Zuerst brauchen wir die Datei archive.php des Parent-Themes. 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 keine Datei mit dem Namen archive.php geben, ist das ein Zeichen dafür, dass es mit diesem Theme 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

Das Ergebnis ist eine übersichtlichere Auflistung der Einsatzberichte und eine Navigationsleiste, um zwischen den Jahresarchiven wechseln zu können.
Das Jahresarchiv als Tabelle darstellen
Markiert in:         

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.