Permalink

6

RSS Feed Veröffentlichung künstlich verzögern

Ich hab gerade eine Funktion für die Datei functions.php im Theme-Ordner entdeckt, die ich gleich mal ausprobieren werde: Delay Feed-Update, bzw. zu deutsch, eine Verzögerung die Feed-Datei zu aktualisieren, nachdem man einen neuen Artikel erstellt hat.

Wozu soll das gut sein?

Es geht uns allen so: Kurz nachdem man einen Artikel veröffentlicht hat, liest man sich den Text noch mal in voller Pracht durch und fängt an, Tippfehler oder grammatikalische Unstimmigkeiten zu korrigieren. Bei einer WordPress-Standardinstallation wird aber mit dem Publizieren eines Artikels auch der RSS-Feed aktualisiert und geht nach draußen in die Welt bzw. zu den Lesern, die die Feed-Variante bevorzugen. Wenn man im Nachhinein noch Fehler korrigiert, wird der RSS-Feed in der Regel nicht mehr mit verbessert, da er ja schon verschickt bzw. aktualisiert wurde.

Man stellt im obigen Fall also die Verzögerung auf 10 oder 20 Minuten (je nachdem, wie lang man im Durchschnitt für die Korrekturen benötigt) und kann in aller Ruhe die Fehler berichtigen. Erst nach der eingestellten Zeit wird dann der Feed aktualisiert.

Statt nur 10 oder 20 Minuten einzustellen, kann aber auch ein Tag oder eine Woche Verzögerung eingestellt werden. Das könnte man nutzen, wenn man die Webseiten-Leser schon beim Publizieren des Artikels mit den Neuigkeiten versorgen möchte, Feed-Leser, die die Webseite selten oder gar nicht besuchen, aber erst nach 3 Tagen mit den „Neuigkeiten“ beglücken möchte. Bei Nachrichten-Blogs wäre eine lange Zeitspanne weniger sinnvoll, aber bei Blogs, die sich mit zeitunkritischen Themen beschäftigen, könnte man so versuchen, die Feed-Leser dazu zu bewegen, wieder verstärkt auf die Webseite zu surfen. Gerade wenn man auch die Artikel im vollen Umfang im Feed veröffentlicht und so kaum Grund bietet, die Webseite zu besuchen. Statt ein oder mehr Tagen, wären ja auch wenige Stunden denkbar, wenn man vielleicht auch versuchen möchte, den Besucher-Traffic etwas zu verteilen.

Lange Rede, kurzer Sinn – hier der Code für die functions.php

/**
 * Delay the RSS-Feed-Update after posting
 */
function publish_later_on_feed($where) {
    global $wpdb;

    if (is_feed()) {
        // timestamp in WP-format
        $now = gmdate('Y-m-d H:i:s');

        // value for wait; + device
        $wait = '30'; // integer

        // http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_timestampdiff
        $device = 'MINUTE'; // MINUTE, HOUR, DAY, WEEK, MONTH, YEAR

        // add SQL-sytax to default $where
        $where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait ";
    }
    return $where;
}
add_filter('posts_where', 'publish_later_on_feed');

Der Code-Schnippsel ist meiner Meinung nach verständlich dokumentiert. Die zeitliche Verzögerung lässt sich über die Parameter $wait und $device einstellen, wobei man bei ersterem eine Zahl angibt, bspw. ’30‘ und bei letzterem die Einheit, z.B. ‚MINUTE‘. Dann wird die Veröffentlichung des Feeds um 30 Minuten verzögert.

Der Code ist von der Seite Stackexchange und wurde mit WordPress 3.0.1 getestet. Nach Veröffentlichung dieses Artikels wird sich zeigen, ob er mit WordPress 3.2 auch noch funktioniert.

Update

Die Funktion funktioniert. Der WordPress Magazin DE Feed hat sich mit einer halben Stunden Verzögerung aktualisiert.

Autor: Thomas

Thomas beschäftigt sich schon seit vielen Jahren mit der Blog-Software WordPress. Dabei konnte er ein umfassendes Wissen aufbauen und kennt sich sowohl mit dem Backend als auch mit dem Frontend und den vielen Erweiterungsmöglichkeiten aus.

6 Kommentare

  1. Wow, danke für den überaus nützlichen Tipp! Denn wer kennt das nicht, Post publiziert, noch mal schön das Endergebnis auf der Seite ansehen und dann – Mist! Weißt du zufällig wie das ist, wenn der Feed schon in der Normaleinstellung, also ohne selbst je was angepasst zu haben, per E-Mail erst am Folgetag verschickt wird, ob er dann die aktuellste Version enthält oder bloß der Feedservice nicht so schnell verschickt? Ich hoffe, du verstehst meine Frage ;)

  2. Und durch was wird die Funktion den aufgerufen? „Kennt“ WordPress diese Funktion von Haus aus (sie ist eben nur optional für Themes in der function.php vorgesehen aber nicht ausprogrammiert) oder muss ich die Funktion noch explizit in mein Theme an anderer Stelle aufrufen oder gar in einer wp-includes Datei (z.B. wp-rss2.php) aufrufen?

    • Hi Bastian,

      nee, einfach in die functions.php einbauen und fertig. Beim Veröffentlichen des Artikels kriegt WordPress dann die Info, dass der RSS-Feed erst in +“Zeitpsanne X“ veröffentlicht werden soll. Das macht es dann aber automatisch.

  3. Pingback: WordPress RSS-Feed 30 Minuten zeitversetzt ausgeben... » Beitrag » YATTER

Schreibe einen Kommentar zu Thomas Langel Antworten abbrechen

Pflichtfelder sind mit * markiert.