Nur Artikel des aktuellen Jahres anzeigen

Zuletzt hatte ich die Idee eines anderen Bloggers aufgegriffen, wie ich die Sharebuttons unterhalb meiner Artikel einbinden kann.

In diesem Beitrag beschreibe ich eine Lösung, mit deren Hilfe ich auf der Beitragsseite sowie auf allen Kategorie-Seiten nur die Artikel des aktuellen Jahres anzeigen lasse. Ich hatte dazu eine ganze Weile gesucht, aber nichts passendes gefunden.

Am Ende bin ich auch ganz froh darüber, weil ich eine Lösung gefunden habe, die ohne ein Plugin auskommt und meiner Meinung nach nur wenig Programmieraufwand mit sich bringt.

Das sind meine Bedingungen:

  • Das aktuelle WordPress 3.8 (zum Zeitunkt der Veröffentlichung dieses Artikels)
  • Ein Child-Theme des Twenty Twelve Themes von WordPress

Du benötigst:

  • Grundkenntnisse in PHP
  • Du benötigst Zugang zu den Dateien auf deinem Server, insbesondere zu den Dateien style.css und content.php deines Twenty Twelve Themes (!)

Mein Ziel ist es, dir meine Lösung so zu beschreiben, dass du sie möglichst einfach übernehmen kannst.

Wieder einmal heißt es: Funktioniere, du Skript!

Am Anfang öffne ich die Datei content.php meines Child-Themes und füge vor dem <article […]>-Tag folgenden Code ein:

<?php
	$currentyear = date('Y');
	$postyear = get_the_date('Y');
	$pattern = "/\/[0-9]{4}\/[0-9]{2}\//";
	$checkpattern = preg_match($pattern,$_SERVER['REQUEST_URI']);
	if ($postyear != $currentyear AND $checkpattern == 0) {} else {
?>

In der Variable $currentyear ist das aktuelle Jahr gespeichert, in der Variable $postyear das Jahr, in dem der Artikel veröffentlicht wurde. Die PHP-Funktion date() ermittelt das aktuelle Datum, ergänz um den Parameter ‚Y‘, reduziert sie das Ergebnis auf das aktuelle Jahr.

Die PHP-Funktion get_the_date() ist eine WordPress-Funktion, die das Veröffentlichungsdatum des Artikels ausliest. Der Parameter ‚Y‘ hat die gleiche Bedeutung wie bei der PHP-Funktion date().

Die Variable $pattern und $checkpattern sorgen dafür, dass die Artikel in den Archiven wieder eingeblendet werden. Wenn du genau wissen möchtest, wie das funktioniert (mit der PHP-Funktion preg_match() und regulären Ausdrücken), dann lass es mich wissen. Eine Erklärung in diesem Beitrag würde den Rahmen dieses Themas sprengen.

Wichtig: Die hier aufgeführte Lösung blendet die Artikel nur in den Zeitarchiven (deren Permalink in der Form www.deindomainname.de/Jahr/Monat/ verfasst ist) ein. Für andere Archivkriterien (Autor, Schlagwörter etc.) muss die preg_match()-Funktion erweitert bzw. angepasst werden.

Ich benutze nur das Zeitarchiv, deswegen stört mich dieses Manko nicht. Allerdings werde ich den Code nochmal verändern, um die Artikel auch im Autorenarchiv anzeigen zu lassen (und diesen Artikel entsprechend überarbeiten).

Wenn die Jahreszahlen nicht miteinander übereinstimmen und keine Archiv-Seite aufgerufen wird, dann wird der Artikel (alles zwischen <article></article>) ausgeblendet (zu erkennen an den geschweiften Klammern, die normalerweise den auszuführenden Code enthalten).

Die Angabe „else {“ leitet die Angaben ein, für den Fall, dass die Jahreszahlen identisch sind und das der Besucher keine Archivseite angefordert hat. Der Artikel wird wie gewünscht angezeigt.

Wichtig! Nach dem </article>-Tag am Ende der content.php muss noch die if-else-Funktion geschlossen werden:

<?php } ?>

Ich hoffe, ich konnte etwas Nützliches teilen und freue mich über eine Rückmeldung in den Kommentaren.