Sidebar
ein-/ausblenden

WP - neue Einträge besonders kennzeichnen

Plugin für WordPress SEO

Anzeige

NeuEs ist eine schöne Sache, wenn man den aktuellen Artikel im Weblog besonders kennzeichnet. Es ist nicht unbedingt notwendig, aber ich finde es recht schön und habe mir ein wenig Gedanken darüber gemacht, wie man dies mit WordPress lösen kann.

Plugins

Nun gibt es auch dafür Plugins, z.B. kann man mit Updated Today Plugin ein Bild auf der Hauptseite darstellen, dabei wird verglichen, ob das heutige Datum mit dem Datum des Beitrags übereinstimmt.
Aber wozu ein Plugin, wenn man das ganze viel einfacher und vorallem viel besser anpassbar, in das Theme einbauen kann.

Alex King bietet ein Plugin - WP Since Last Visit, welches noch ein wenig weiter geht und mit Hilfe von Cookies abfragt, welche Beiträge der Besucher der Website noch nicht gesehen hat und markiert die dann mit einem Icon.

Wie gehts?

Um das ganze auf der Startseite zu sehen, insofern dort die aktuellen Posts dargestellt werden, muss die index.php des verwendeten Themes bearbeitet werden.

Einige Erläuterungen zum Code habe ich hinter die Anweisungen geschrieben und der Code ist ein wenig aufgeblasen erstellt, damit sich die Hintergründe besser verstehen lassen. Für die PHP-Kenner kann noch einiges zusammen gefasst werden.
Im Beispielfall wird ein Bild für den aktuellen Beitrag, der das gleiche Herausgeberdatum haben muss, wie es aktuell ist, erstellt. In der zweiten Abfrage gehe ich über einen gewissen Zeitraum, im diesem Fall die letzten 5 Tage (-5), und erstelle ein anderes Bild. Soll in der Zukunft gerechnet werden, so muss ein positiver Wert vergeben werden.
Der Code muss dort eingebracht werden, wo später die Ausgabe erscheinen soll, zum Beispiel über der Überschrift des Beitrags - h2.

Das Bild wird jeweils mit der Klasse fb_newpost formatiert, dazu einfach das Stylesheet bearbeiten.


<?php
global $wpdb;
$fb_date_sql = current_time('mysql'); //date today
$fb_date_today = substr($fb_date_sql, 0, 10); //string 0-10 if date today
$fb_postdate = mysql2date('Y-m-d', $post->post_date); // date of post
$my_time = strtotime($fb_date_today); //converts date string to UNIX timestamp
$timestamp = $my_time + (-5 * 86400); //calculates # of days passed ($num_days) * # seconds in a day (86400)
$return_date = date("Y-m-d", $timestamp);  //puts the UNIX timestamp back into string format);
if ($fb_postdate == $fb_date_today) { ?>

heute <?php } if ($fb_postdate > $return_date) { ?>

Neu <?php } ?>

Anmerkung

Normalerweise kann man bei WordPress das Datum des Beitrags mit dem Template-Tag the_date auslesen. Leider hatte ich Problem, wenn es mehrere Posts an einem Tag gab, dann wurde das Datum nur im letzten Beitrag ausgelesen. Mit the_time kann man die Ausgabe nicht unterbinden, so dass ich mich für die sql-Abfrage entschieden habe.


$fb_postdate = the_date('Y-m-d', '', '', False); // Tag

$fb_postdate = mysql2date('Y-m-d', $post->post_date); // sql

5 Kommentare und 1 Trackback zu „WP - neue Einträge besonders kennzeichnen“

  1. 1
    Kommentar von Ralf

    Nette Idee. Und ist in codex.wordpress.org auch schon dokumentiert (Abschnitt "Date-Based Differences")
    Dort findest du dann auch die Funktion get_the_date. Obwohl es diese Funktion gar nicht (mehr) gibt. Egal ;)

    Dafür kannst du mit get_the_time die Ausgabe unterdrücken. Die Funktionen bei WP sind oft so ausgelegt, dass man mit the_function eine Ausgabe bekommt. Wohingegen man mit get_the_function den Wert in einer Variable übertragen kann. Ist leider nicht konsequent bei allen Funktionen umgesetzt (s.o.)
    Aber get_the_time ist auch nur eine WP typische Krücke die wiederum auf get_post_time() zurück greift. Ab und zu lohnt es sich in die Abgründe... ähm Tiefen von WP abzusteigen und sich mal die Dateien in wp-includes anzuschauen. Aber dann wird einem auch schnell klar wie umständlich WP zusammen geschraubt ist.

    Fazit:
    Deine Lösung ist eigentlich die optimalere da sie nicht erst zwei oder drei andere Funktionen aufruft, sondern direkt auf das Array mit den verfügbaren Daten zugreift.
    Im Hinblick auf Kompatibilität mit zukünftigen und älteren WP-Versionen sollte man wohl besser auf die WP-Funktionen zurückgreifen.

    Und eine kleine Randbemerkung noch: Jonny Haeusler hatte mal vor langer Zeit gefragt ob man Einträge "verblassen" lassen kann. Wie man sieht, kann man das. Und wenn es auf den ersten Blick keinen Sinn macht, dann auf den zweiten. Nämlich dann, wenn man mit seinem Blog eine Art Veranstaltungskalender umsetzt. Alte, bereits gelaufene Events könnte man dann ausgegraut darstellen. Zukünftige und aktuelle in einer lesbaren Form.

  2. 2
    Kommentar von Frank Bültge

    Morgen Ralf,
    herzlichen Dank für die Anmerkungen, die wie immer von fir, sehr interessant und hilfreich sind.
    ** Sorry, dass ich auf deine Mail nicht geantwortet habe, bin erst seit eben wieder online. Die letzten Tage lief hier alles ohne PC - muss auch mal sein.
    LG Frank

  3. 3
    Kommentar von Pepino

    ähhh, Weblogs sind doch eh in umgekehrter chronologischer Reihenfolge... ich wüsste nicht, wozu da solch eine Kennzeichnung nützlich wäre (es sei denn, die Besucher leiden an Alzheimer).

  4. 4
    Kommentar von Frank Bültge

    @Pepino: Das ist richtig, aber eine Eyecatcher sorgt eben für Aufmerksamkeit. Der letzte Beitrag muss ja nicht unbendigt von heute oder letzten fünf Tagen sein.

  5. 5
    Kommentar von Ralf

    Ach Frank, ich habe die Tage ohne großen Mailverkehr genossen. Macht nichts ;)

    @Pepino:
    Sind sie das? Oder müssen sie das sein? Also mir fallen spontan noch ein paar Sachen ein wo ich ganz gerne anhand des Datums Beiträge unterschiedlich kennzeichnen würde.
    Hat man des öfteren Updates eines Beitrages, so könnte hier natürlich ebenfalls ein Eyecatcher hilfreich sein. Oder wenn man verschiedene Kategorien in einer Übersicht darstellt, ist es recht hilfreich die neueren Beiträge zu markieren.
    Und nicht zu letzt ein Hinweis an die netten Googlebesucher. Es kam schon vor das ich in einen meiner Weblogs Kommentare auf teilweise 2 Jahre alte Einträge bekommen hatte. Die Kommentatoren dachten aber wohl das es sich um aktuelle Einträge handelte da sie offensichtlich nicht auf das Datum geachtet haben.

    Wenn man sein Blog puristisch und chronologisch führt, dann hast du natürlich Recht.

  6. 6
    Pingback von KOCHWERKSTATT » links for 2007-01-04

Kommentar schreiben

Kommentarregeln: Bleib cool, kritisch ist in Ordnung, aber wenn du unhöflich bist, dann lösche ich deinen Kommentar. Bitte benutze deinen persönlichen Namen oder Initialen und nicht den Namen eines Unternehmens, dies würde als Spam gewertet und wird gelöscht. Der Zusammenhang zwischen Namen und URL sollte nicht offensichtlich auf Spam hindeuten! ♥ Ansonsten, vielen Dank für den Kommentar und viel Spaß mit meinem Blog.

E-Mail-Benachrichtigung bei weiteren Kommentaren.
Auch möglich: Abo ohne Kommentar.

Kommentar-Hilfe

händischer Spam:
Beachte die Kommentarregeln, jede Form von versuchtem Spam wird gelöscht. Warum und wieso steht in einem meiner Beiträge.

Bezug auf Textstellen:
Du kannst direkt bezug auf Textstellen im Beitrag nehmen. Dazu muss lediglich der Bereich im Artikel markiert werden; daraufhin erscheint ein Button, der den markierten Text in das Kommentarfeld übernimmt und als Zitat auszeichnet. Die Funktion ist nur bei aktivem JavaScript nutzbar.

xHTML:
Du kannst folgende Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <code> <pre> <em> <strong> <strike> <ul> <ul> <li>

Achte darauf, wenn du Code im Kommentar hinterlegen willst, dann muss der Code maskiert sein. Dann wird er nicht interpretiert. Der Code muss mit Hilfe von HTML-Entities dargestellt werden, d.h. dass man z.B. < als &lt; und > als &gt; einfügt.

E-Mail-Benachrichtigung bei neuen Kommentaren ?
Wenn der Haken in der Checkbox gesetzt ist, dann wirst du über neue Kommentare vie E-Mail informiert. Der Versand erfolgt nur, wenn du die URL in der Bestätigungs-E-Mail genutzt hast oder schon Abonnent hier im Blog bist.

Kommentar erscheint nicht:
Alle Kommentare werden manuell geprüft, freigegeben und nach Möglichkeit beantwortet. Bitte um etwas Geduld und Nachsicht.

Identifikationsbilder (Avatare):
Auf Gravatar.com kann man sich mit seiner E-Mail-Adresse registrieren und ein Bild hochladen, dann erscheint dieses Gravatar hier und in vielen weiteren Blogs.

Spamschutz:
Das Kommentarformular ist mit einem Spamschutz ausgerüstet. Solltest du diesen Artikel ohne JavaScript besuchen und kommentieren wollen, so muss du die Frage beantworten und das jeweilige Wort in das Textfeld eingeben.