„Last modified date“ in WordPress anzeigen

Es wäre schön, wenn Blog-Leserinnen und -Leser sehen, ob und wann ein Autor seinen Blogpost aktualisiert hat. Auch Suchmaschinen, allen voran Google, freuen sich, wenn redaktionelle Beiträge ein sichtbares oder unsichtbares „last modified date“ enthalten.

Last modified date in WordPress
Last modified date in WordPress

Ich habe für das WordPress-Theme TwentyThirteen ein Child-Theme erstellt – mein erstes kleines Child-Theme! 🙂 Es zeigt das „last modified date“ und ändert zusätzlich die Reihenfolge der Post-Metadaten unter dem Post-Titel.

WordPress-Experten können an dieser Stelle nach unten zum Quellcode für functions.php im Child-Theme scrollen. WordPress- und Programmier-Neulingen möchte ich zunächst möglichst verständlich erklären, wie man vorgeht und wo man im Web weiterführende Informationen findet.

WordPress-Child-Themes erstellen

Ich habe zuerst im Original-Theme TwentyThirteen, auch Parent-Theme genannt, den Quellcode so modifiziert, wie ich ihn haben wollte. Das hat auch ganz gut geklappt. Der Nachteil ist allerdings, dass beim nächsten Update genau diese Anpassungen weg sind. Damit Eingriffe ins Theme auch Upates überstehen, ist es sinnvoll, ein Child-Theme zu erstellen.

Ich habe mich an ein Child-Theme gewagt – und so geht’s:

  1. Auf dem Webspace einen Ordner für das Child-Theme anlegen und zwar unter /wp-content/themes/. Der Ordner muss nach folgendem Schema benannt werden: theme-child.
    Beispiel: Ich nutze das TwentyThirteen-Theme und möchte dieses für mich anpassen. Der Ordner heißt twentythirteen-child

    Child-Theme-Ordner anlegen
    Child-Theme-Ordner anlegen
  2. Eine Datei namens style.css anlegen. Dazu kann man die Vorlage von WordPress verwenden oder die etwas ausführlichere Variante von Workpaper.

    @import importiert die CSS-Inhalte des Original-Themes in die style.css des Child-Themes. In der neu angelegten style.css kann man dann eigene CSS-Anpassungen vornehmen, die jedoch für das „last modified“-Datum nicht nötig sind.
    Wichtig ist, dass die CSS-Styles des Original-Themes importiert werden, damit das Layout des Child-Themes so aussieht wie das des Original-Themes.

  3. Als Nächstes kann man nun einfach die php-Dateien, die man anpassen möchte, aus dem Parent-Theme kopieren und im Child-Ordner einfügen. Das habe ich nicht ausprobiert, weil ich Änderungen an functions.php vornehme. Bei functions.php des Child-Themes muss man beachten, dass zuerst functions.php (Parent) geladen wird. Deshalb nimmt man in functions.php (Child) nur die Funktionen auf, die man ändern möchte (siehe Child-Theme bei WordPress, Quellcode siehe unten).
  4. Nun kann man noch einen Screenshot von seinem Child-Theme erstellen und mit dem Namen screenshot.png in dem Child-Ordner ablegen. Der Screenshot hat folgende Maße: 600 px Breite x 450 px Höhe.
  5. Als Letztes muss man das Child-Theme aktivieren. Dazu geht man in den WordPress-Admin-Bereich auf Design > Themes und aktiviert sein Child-Theme, das dort angezeigt wird.
    Falls der Admin-Bereich und das Frontend nicht mehr angezeigt werden, einfach die Nerven behalten. Es ist alles noch vorhanden. 🙂 Der Fehler liegt dann in functions.php (Child). Lösung: Fehler finden oder alle Einträge in functions.php (Child) löschen, speichern und die Seite neu laden. Anschließend kann man einfach das Parent-Theme aktivieren, wenn man die Änderungen später vornehmen oder auf diese verzichten möchte. 🙂
    Ebenfalls keine Sorgen haben, dass die Seite nun anders aussieht als im Parent-Theme. Das Child-Theme ist ein neues Theme, das zunächst alle Einstellungen des Parent-Themes übernimmt. Deshalb muss man z.B. im Admin-Bereich Widgets, Menüs, Hintergrund usw. anpassen.

Folgende Beiträge haben mir geholfen, mein erstes Child-Theme zu erstellen und das „Last modified date“ einzufügen:

 

Quellcode für Post-Meta bei TwentyThirteen

Um die Reihenfolge der Post-Metadaten zu ändern, kopiert man aus functions.php (Parent) einfach die Zeilen 330-357. TwentyThirteen zeigt die Post-Metadaten in dieser Reihenfolge an: date, categories, tags, author.

Die kopierten Zeilen fügt man nun in functions.php (Child) ein – nicht vergessen, functions.php beginnt mit „<?php“ und endet mit „?>„.
Ich möchte die Metadaten in dieser Reihenfolge haben: date, author, categories, tags.
Man schneidet in diesem Fall den Block „Post author“, der ganz am Ende des eingefügten Quellcode steht, aus und fügt diesen nach „twentythirteen_entry_date();“ ein (Zeilen 10-17):

 

„last modified date“ im Quellcode von TwentyThirteen implementieren

Für das „last modified date“ habe ich folgende Anforderungen:

  1. „last modified date“ wird nicht angezeigt, wenn der Blogpost innerhalb der ersten 24 Stunden nach der Publikation geändert wird.
  2. „last modified date“ wird ebenfalls nicht angezeigt für Änderungen, die zwischen „21.06.2013, 00:00:01 Uhr“ und „02.07.2013, 23:59:59 Uhr“ erfolgt sind.

zu 1: Man veröffentlicht z.B. einen Beitrag am 12.12.2013 um 00:00:01 Uhr. Korrigiert man den Blogpost am gleichen Tag um 00:01:12 Uhr, dann besitzt der Post ein Änderungsdatum vom 12.12.2013. Einerseits sieht es merkwürdig aus, wenn ein Beitrag am 12.12.2013 veröffentlicht und ebenfalls am 12.12.2013 aktualisiert wurde. Andererseits soll das Aktualisierungsdatum gerade bei alten Beiträgen zeigen, dass der Autor diese Beiträge inhaltlich aktualisiert hat. Also benötigt man eine Zeitspanne, in welcher das Aktualisierungsdatum nicht ausgegeben wird.

zu 2: Ich habe Ende Juni 2013 viele alte Blogposts mit dem Plugin „Yoast WordPress SEO“ suchmaschinenoptimiert. Diese Überarbeitungen möchte ich dem User und Google nicht als Aktualisierung anzeigen.

Zuerst kopiert man nun aus functions.php (Parent) die Zeilen 371-388 (siehe oben) und fügt diese in functions.php (Child) ein:

Erläuterungen zu „function twentythirteen_entry_date()“:

  • Zeilen 40 und 41: Es wird die Zeit von Veröffentlichung und Aktualisierung ermittelt. Die Variable U steht für Unix-Timestamp.
  • Zeile 46: Liegt die Aktualisierungszeit innerhalb der ersten 24 Stunden nach der Veröffentlichung oder liegt die Aktualisierungszeit zwischen dem 21.06.2013 (00:00:01) und 02.07.2013 (23:59:59), wird nur das Veröffentlichungsdatum des Blogposts angezeigt. Wer den Zeitraum nicht benötigt, kann diesen inklusive Oder-Verknüpfung entfernen: „|| ($u_modified_time < 1372809599 && $u_modified_time > 1371772801 )„. Der Wert 86400 steht für 24 Stunden und kann beliebigt geändert werden (60 sec x 60 min x 60 h).
  • Zeile 57: Falls die Bedingungen aus Zeile 46 nicht zutreffen, werden das Veröffentlichungsdatum und das „last modified date“ angezeigt.

Da ich noch kein php-Experte bin, freue ich mich über Fehlerhinweise von Profis! 🙂

 

Kommentar verfassen