Sidebar
ein-/ausblenden

Sprachschlüssel des WordPress-Feed richtig setzen

Plugin für WordPress SEO

Anzeige

WP Adventskalender 13
Mit Hilfe des Sprachschlüssel kann nicht nur das Blog ausgezeichnet werden, sondern auch der Feed: <language>en</language>.
Auch WordPress hat dafür eine Option vorgesehen; gibt dem Anwender aber keine einfache Möglichkeit der Pflege in die Hand.
Sinnvoll ist es aber, den Schlüssel nach dem Codec zu setzen und daher hier einige Möglichkeiten das zu tun.

Via Datenbank

Direkt in der Datenbank den Schlüssel (option_name) rss_language suchen und den Wert deiner Sprache pflegen, zum Beispiel de. Die Schlüsselwerte findet man beispielsweise auf dieser Seite.

Via Hook

Alternativ kann man das ganze auch mit Hilfe einer Funktion von WordPress setzen. Dazu genügt folgender Syntax, einfach in der functions.php des Themes abgelegt und ein Aufruf des Admin oder Frontend genügt; einmalig reicht um den Wert zu setzen. Danach kann der Code wieder aus dem Template entfernt werden.


function update_rss_language() {
	update_option( 'rss_language', 'de' );
}
add_action( 'admin_init', 'update_rss_language' );

Komfortabel in den Einstellungen

Die letzte Möglichkeit ist ein wenig komfortabler und legt ein weiteres Feld im Bereich der Einstellungen - Lesen ab. Dort gibt es nun ein weiteres Feld, welches es erlaubt, den Wert zu pflegen.

Neue Option für RSS Language

Der folgende Code muss dazu in einem Plugin oder in der functions.php des aktiven Themes abgelegt werden. Aktuell habe ich mal den Code inkl. der Kommentare abgelegt, so dass man es direkt als Plugin nutzen kann; copy/paste in eine PHP-Datei und in den Ordner wp-content/plugins kompieren. Im Anschluss kann man das Plugin im Backend von WordPress aktivieren.


<?php

/*
Plugin Name: RSS Language
Plugin URI: http://bueltge.de/wp-landingsites-de-plugin/181/
Description: Add options field for rss language
Version: 1.0
Author: Frank B&uuml;ltge
License: GNU
Author URI: http://bueltge.de/
*/

function rss_language_string() {
	?>
	<input name="rss_language" type="text" id="rss_language" value="<?php form_option('rss_language'); ?>" class="regular-text" />
	<span class="description"><?php _e('RSS supports multiple languages through the language element, which contains a short code that identifies that the natural language employed in the channel. See on this table for your <a href="http://www.rssboard.org/rss-language-codes#table">language codes</a>.'); ?></span>
	<?php
}

function rss_language_admin_init() {
	register_setting( 'reading', 'rss_language' );
	add_settings_field( 'rss_language', __('RSS Language Code'), 'rss_language_string', 'reading');
}
add_action( 'admin_init', 'rss_language_admin_init' );

?>

13 Kommentare zu „Sprachschlüssel des WordPress-Feed richtig setzen“

  1. 1
    Kommentar von LexX Noel

    Das ist mal wieder Wahnsinn Frank, was du hier an Tipps & Tricks für WordPress schreibst. Kannst du gerne mal öfters machen. :D

  2. 2
    Kommentar von laufradio.de

    Vielen Dank für diesen Tipp!
    Ich bin zufälligerweise seit gestern auf der Suche nach so etwas!

  3. 3
    Kommentar von Matthias

    Vielen Dank,

    immer sehr nützlich, deine Tipps zu WordPress. Haben mir schon sehr oft weitergeholfen.

    Gruß,
    Matthias

  4. 4
    Kommentar von Puh

    Herzlichen Dank!

  5. 5
    Kommentar von Fox

    Danke!
    Genau was ich brauchte :)

  6. 6
    Kommentar von Steven Hod

    Wird diese Einstellung in der aktuellen WordPress 3.0 DE Version auch noch benötigt oder ist das dort schon berücksichtigt?

  7. 7
    Kommentar von Frank Bültge

    @Stefan: nein, dies muss man auch weiterhin tun.

  8. 8
    Kommentar von Heiner

    Vielen Dank für Deine immer hilfreichen Tipps, Frank. Die englische Spracheinstellung habe ich entdeckt, als plötzlich mein Feed lt. Feed Validator nicht mehr valide war. Also habe ich es mit Deiner Hook Lösung geändert.

    Allerdings war das nicht der monierte Fehler. Ich finde bei Google & Co. dafür keine Lösung. Offensichtlich ist es der doppelte "title" Eintrag. Woher der plötzlich kommt - vorher war alles OK - ist mir schleierhaft. Und ihn wegbekommen schaffe ich auch nicht. Hast Du ein Rat oder Tipp? (Ich bin WordPress Anfänger und nach Deinem Videokurs von WP begeistert und von Raidweaver (Mac) umgestiegen. Allerdings ist mir so manches noch sehr räselhaft.)

    Hier das Ergebnis des Feed Validator:

    This feed does not validate.

    *

    line 12, column 23: Undefined title element: title (2 occurrences) [help]

    imagefilm24.com
    ^

    *

    line 14, column 1: Undefined title element: link (2 occurrences) [help]

    <atom:link href="http://www.imagefilm24.com/feed/" rel="self" type="applica ...
    ^

    Source: http://www.imagefilm24.com/feed/

    1.
    2.
    10.
    11.
    12. imagefilm24.com
    13.
    14.
    15. http://www.imagefilm24.com
    16. Filme für geschäftlichen Erfolg
    17. Wed, 08 Sep 2010 22:36:20 +0000
    18. de
    19. hourly
    20. 1

  9. 9
    Kommentar von Frank Bültge

    @Heiner: in deinem Feed ist ein Tag zu viel <title>imagefilm24.com<title></title>
    Vermutlich kommt der von einem Plugin oder dem Theme, daher kannst du nur alles deaktivieren und nach und nach suchen, woher es kommt. Alternativ könnte man den Hook in deinen Plugins suchen, aber das ist für Einsteiger eher schwierig.

  10. 10
    Kommentar von Heiner

    @Frank: Vielen Dank für Deinen Hinweis. Es lag am Theme. Ich musste nur eine Zeile ändern und schon ist alles wieder in Butter.

  11. 11
    Kommentar von Kai

    Vielen Dank!

    Genau das habe ich gesucht, auch wenn ich mir als php-anfänger mal gleich die functions.php zerschossen hatte... aber nach kurzem probieren habe ich es hinbekommen.

  12. 12
    Kommentar von Joachim

    Danke Frank und ich habe mir einen Wolf gesucht wie ich das ändern kann aber wie so oft findet man auf Deinem Blog die Lösung für fast jedes WP Problemchen :)

  13. 13
    Kommentar von Carsten

    Hallo Frank,

    ich nutze WP als mehrsprachiges System und war mit Deiner starren Lösung nicht ganz zufrieden. Ich nutze WPML und verwende zum Anpassen daher einfach folgende Zeilen in der functions.php

    function change_rss_lang(){
    return ICL_LANGUAGE_CODE;
    }
    add_filter('pre_option_rss_language', 'change_rss_lang');

    für die Nutzung ohne WPML kann man ja auf die WP-eigene Konstante zurück greifen:

    function change_rss_lang(){
    return WP_LANG;
    }
    add_filter('pre_option_rss_language', 'change_rss_lang');

    Trotzdem Danke für den ersten Beitrag zu meiner Recherche.
    Gruß Carsten

Kommentare sind geschlossen.