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, 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

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:         

2 thoughts on “Das Jahresarchiv als Tabelle darstellen

  • 6. Dezember 2018 um 11:19
    Permalink

    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

    
    
    
    	array('post'),
    	'posts_per_page' => 20
    ); 
    $posts_query = new WP_Query( $args );
    while ($posts_query->have_posts()) : $posts_query->the_post();
    ?>
    
    
    
    
    'name',
    'show_count' => 0,
    'hide_empty' => 0,
    'title_li' => '',
    'taxonomy' => 'category'
    ); 
    wp_list_categories($args ); 
    ?>
    
    
    
    
    						
    					
    • 7. Dezember 2018 um 21:22
      Permalink

      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 mit endwhile; beendet. Also alles von while bis endwhile mit dem obigen Code-Vorschlag ersetzen.

Kommentare sind geschlossen.