toscho.design

WordPress: Kommentarfeed mit Blognamen

GwenDragon hat mich heute darauf hingewiesen, daß im Kommentarfeed zu einzelnen Artikeln der Titel ein bißchen zu dünn aussieht: Der Blogname fehlt.
Wenn mehrere Blogs zum gleichen Thema schreiben und jemand bei allen den Newsfeed abonniert hat, wird die Übersicht schon etwas schwierig.

Am besten sollte der Name des Blogs vor dem des Artikels stehen, aber das geht leider nicht: Die Reihenfolge ist im RSS-Template festgeschrieben.

Immerhin kann man einen Filter auf den Titel legen und den Blognamen dahinter setzen.
In die functions.php des aktuell verwendeten Themes schreiben wir:

add_filter('the_title_rss', 'rss_title_suffix');
function rss_title_suffix($str)
{
    if ( is_feed() AND is_singular() )
    {
        return $str . ' - ' . get_bloginfo('name');
    }
    return $str;
}

Aus dem Titel …
Kommentare zu: PHP: Funktion sanitize_ip

… wird jetzt …

Kommentare zu: PHP: Funktion sanitize_ip - toscho.design

Das ist nicht perfekt, aber besser als vorher.

Update 1 (10.10.2009)

Peter Westwood hat mich auf eine bessere Fährte gelenkt. Die neue Fassung sieht so aus:

add_filter('gettext', 'rss_title_prefix');

function rss_title_prefix($str)
{
    if ( is_feed() AND is_singular() )
    {
        return str_replace('Kommentare zu:', get_bloginfo('name') . ' - Kommentare zu:', $str);
    }
    return $str;
}

Ergebnis:
toscho.design - Kommentare zu: PHP: Funktion sanitize_ip

Update 2 (10.10.2009)

Zwei Mails später habe ich nun einen Code, der in jeder Sprache funktioniert. Danke nochmal an Peter Westwood und an Frank Bültge.

if ( !function_exists('rss_title_prefix') )
{
    function rss_title_prefix($translation, $original, $domain)
    {
        if ( ( 'default' == $domain )
            && ( 'Comments on: %s' == $original ) )
        {
            return get_bloginfo('name') . ' - ' . $translation;
        }
        return $translation;
    }
    add_filter('gettext', 'rss_title_prefix', 10, 3);
}

Update 3 (09.02.2010)

Inzwischen hat sich der Originaltext von Comments on: zu Comments for geändert, daher muß das jetzt so aussehen:

if ( !function_exists('rss_title_prefix') )
{
    function rss_title_prefix($translation, $original, $domain)
    {
        if ( ( 'default' == $domain )
            && ( 'Comments for %s' == $original ) )
        {
            return get_bloginfo('name') . ' - ' . $translation;
        }
        return $translation;
    }
    add_filter('gettext', 'rss_title_prefix', 10, 3);
}

Das kommt, wie gesagt, in die functions.php, oder man benutzt den Code als Plugin:

6 Kommentare

  1. Dieter am 10.10.2009 · 20:56

    Hallo Thomas,

    eine gute Idee und toll, dass Du Dich um deren Umsetzung gekümmert hast.

    Ich habe den Code vom Update 2 in die functions.php meines aktuellen Themes kopiert. Allerdings konnte ich bei den Kommentarfeeds noch keine entsprechende Ergänzung des Titels feststellen.

    Wirkt die Änderung nur für Kommentare, die nach Ergänzung der functions.php erfolgen oder kann das ein Caching-Effekt sein?

    Beste Grüße
    Dieter

  2. Thomas Scholz am 10.10.2009 · 21:05

    @Dieter: Zumindest Opera aktualisiert den Titel des Feeds nicht, wenn er ihn schon einmal abgerufen hat. Im Quelltext sieht man die Änderung aber.

    Vielleicht bist du in denselben Bug gelaufen.

    Benutze lieber die dritte Version. Die kommt ohne die Kontrolle (is_feed() AND is_singular()) aus und ist deshalb ein µ schneller. Außerdem übersteht sie Änderungen an der Sprachdatei.

  3. Dieter am 10.10.2009 · 21:44

    @Thomas
    Ich habe die dritte Version (= Update 2) in die functions.php des aktiven Themes kopiert.

    Hat etwas gedauert, bis ich verstanden habe, dass mit Titel nicht die Überschrift des jeweiligen Kommentars gemeint ist. Beim Safari und IE 8 sehe ich den Blognamen sowohl oben im Browserfenster als auch im oben neben dem Browsericon.

    Beste Grüße
    Dieter

  4. GwenDragon am 11.10.2009 · 11:46

    Fein, dass es geändert wird und Thomas auch gleich einen Patch für die PHPler bereit stellt.

    Mich wundert nur, dass die Lösung keine einfache Änderung an einem RSS-Template ist, sondern extra eine PHP-Funktion geschrieben werden muss.
    So verschieden sind halt die Blog-Engines.

  5. Thomas Scholz am 09.02.2010 · 13:04

    Dieser Code wurde aktualisiert. Wer das Plugin benutzt, möge es bitte neu herunterladen.

  6. Boateng am 21.02.2012 · 00:31

    Hey, ich bin mal so frech und poste mal was in denein Blog. Sieht schnieke aus! Ich benutze auch seit kurzem WordPress kapiere aber noch nicht alles. Deine Seite ist mir da immer eine tolle Motivation. Weiter so!