This might be a rather seldom needed feature, but I need it for my blog (yes, this one).
As I am writing my blog posts in both english (for technical stuff) and german (for all the other stuff), I need to change the html’s lang attribute to display the correct language code.
If you like this content and found it helpful, please consider supporting me with a small donation.
How am I using it?
I am using an extra template file for my english blog posts. The filename is single-english.php . So whenever I am writing an english post like this one, I select the correct template for it.
This image shows my Template selector, which lets me chose between the standard template and the english post template.
Override WordPress’ language_attributes function
To change the html’s lang attribute , we need to override the language_attributes function. To do so, I inserted the following code into my theme’s functions.php file.
function __language_attributes(){ $format = get_page_template(); $lang = "de-DE"; if(preg_match("/single-english/", $format)) { $lang = "en-US"; } return 'lang="'.$lang.'"'; } add_filter('language_attributes', '__language_attributes');
Within this function, I get the page template used by the current post. I then check whether my filename is present in the returned template path. If so, I set the variable $lang to en-US . The standard language is have pre-set is de-DE .
Servus Chris,
Bin auf deinem Blog gelandet, weil ich auf der Suche nach jemandem, der sich *wirklich* auskennt und deutsch spricht. Mir ist schon klar, dass du deswegen noch lange nicht dazu da bist um mir zu helfen. Trotzdem versuche ich einfach mein Glück: “Wie bzw. wo kann ich in WordPress 4.9.1 den Ländercode von DE auf AT korrigieren?”
Nicht weil mich das DE stören würde, sondern weil ich gerne alles korrekt habe. Leider kenne ich mich zuwenig aus um zu wissen wonach ich genau googlen muss :-(
Ein Linktip würde schon genügen.
So oder so … Liebe Grüße aus Wien
Günter
Hallo Günter,
Du könntest in Deiner header.php die folgende Zeile anpassen:
< html < ?php language_attributes(); ?>>
Hier schreibst Du dann zum Beispiel
< html lang="de-AT">
Du kannst die Datei editieren, indem Du im WordPress-Admin auf Design->Editor gehst und dann die Datei header.php auswählst.
Bitte beachte, dass Änderungen an einem Theme verlorengehen, wenn das Theme ein Update bekommt. Daher solltest Du in diesem Fall besser mit einem Child-Theme arbeiten.
Ich hoffe, das hilft Dir weiter :)
Liebe Grüße
Chris
“Das Gute/Richtige liegt oft so nah.”! Ich habe, wie immer viel zu kompliziert gedacht.
Danke für die rasche und unkomplizierte Antwort.
Herzlichen Dank und Liebe Grüße
Günter
This really helped me. I have one question. It would be really handy to have a dropdown option to choose href lang from for a single page, just like on the photo you included. Would it be possible for you to share a code for that?
tut wie ne eins … danke!
Hi Jeff,
danke für die Rückmeldung. Schön, dass es Dir hilft.
Danke, ist genau wonach ich gesucht habe, den Code habe ich in mein Child-Theme functions.php eingefügt, die Option Beitrag-Attribute zur Ausfahl der Vorlage bekomme ich nicht, wo muss die Datei single-english.php hinkommen ?