Ärger mit Umlauten in Permalinks bald Vergangenheit?

Bisher war es zuweilen ärgerlich, wenn erst nach dem Indizieren der Beiträge festgestellt wurde, dass im Permalink aus dem Wörtchen für ein undefinierbares fur und aus dem Wörtchen zusätzlich ein zusatzlich wurde. Was sollte da noch anderes helfen, als den Fehler im Permalink korrigieren und einen Redirect zu setzen. Doch der Ärger mit den fehlerhaft übersetzten Umlauten in den Permalinks soll ab Version 3.6 der Vergangenheit angehören, da ab dieser Version das Setzen der Länderlokalen in der wp-config.php genügen soll.

Nun gut, sei es drum, in der Version 3.5 scheint es zumindest noch nicht der Fall zu sein und so haben wir folgende Änderung in der Datei /wp-includes/formatting.php vorgenommen.

Auszug aus der Datei formatting.php (Version 3.5.2) (Zeile 611 bis 645):

    if (seems_utf8($string)) {
        $chars = array(
        // Decompositions for Latin-1 Supplement
        chr(194).chr(170) => 'a', chr(194).chr(186) => 'o',
        chr(195).chr(128) => 'A', chr(195).chr(129) => 'A',
        chr(195).chr(130) => 'A', chr(195).chr(131) => 'A',
        chr(195).chr(132) => 'Ae',chr(195).chr(133) => 'A',   // 132 A zu Ae
        chr(195).chr(134) => 'AE',chr(195).chr(135) => 'C',
        chr(195).chr(136) => 'E', chr(195).chr(137) => 'E',
        chr(195).chr(138) => 'E', chr(195).chr(139) => 'E',
        chr(195).chr(140) => 'I', chr(195).chr(141) => 'I',
        chr(195).chr(142) => 'I', chr(195).chr(143) => 'I',
        chr(195).chr(144) => 'D', chr(195).chr(145) => 'N',
        chr(195).chr(146) => 'O', chr(195).chr(147) => 'O',
        chr(195).chr(148) => 'O', chr(195).chr(149) => 'O',
        chr(195).chr(150) => 'Oe',chr(195).chr(153) => 'U',   // 150 O zu Oe
        chr(195).chr(154) => 'U', chr(195).chr(155) => 'U',
        chr(195).chr(156) => 'Ue',chr(195).chr(157) => 'Y',   // 156 U zu Ue
        chr(195).chr(158) => 'TH',chr(195).chr(159) => 'ss',  // 159 s zu ss
        chr(195).chr(160) => 'a', chr(195).chr(161) => 'a',
        chr(195).chr(162) => 'a', chr(195).chr(163) => 'a',
        chr(195).chr(164) => 'ae',chr(195).chr(165) => 'a',   // 164 a zu ae
        chr(195).chr(166) => 'ae',chr(195).chr(167) => 'c',
        chr(195).chr(168) => 'e', chr(195).chr(169) => 'e',
        chr(195).chr(170) => 'e', chr(195).chr(171) => 'e',
        chr(195).chr(172) => 'i', chr(195).chr(173) => 'i',
        chr(195).chr(174) => 'i', chr(195).chr(175) => 'i',
        chr(195).chr(176) => 'd', chr(195).chr(177) => 'n',
        chr(195).chr(178) => 'o', chr(195).chr(179) => 'o',
        chr(195).chr(180) => 'o', chr(195).chr(181) => 'o',
        chr(195).chr(182) => 'oe',chr(195).chr(184) => 'o',   // 182 o zu oe
        chr(195).chr(185) => 'u', chr(195).chr(186) => 'u',
        chr(195).chr(187) => 'u', chr(195).chr(188) => 'ue',  // 188 u zu ue
        chr(195).chr(189) => 'y', chr(195).chr(190) => 'th',
        chr(195).chr(191) => 'y', chr(195).chr(152) => 'O',

Funktioniert ebenso bei der WP Version 3.3.2, wobei es bei dieser etwas älteren Version die Zeilen 568 bis 603 in der Datei formatting.php betrifft.

Sollte es auch Ihnen zuweilen so ergehen, dass aus einem Titel wie “Unsere Hühner können lesen” anfänglich unbemerkt ein Permalink wie “/unsere-huhner-konnen-lesen/” wird, so sollten Sie nicht nur den Permalink korrigieren sondern auch einen Redirect setzen, falls die Artikelseite zwischenzeitlich bereits von den Suchmaschinen erfasst wurde.
Dank mod_alias wird für Redirects kein mod_rewrite benötigt und da ein Redirect möglichst vor den mod_rewrite Regeln notiert werden sollte, so können Sie derartige Korrekturen (Weiterleitungen) gleich in den ersten Zeilen Ihrer htaccess notieren.

Beispiel:

Redirect 301 /unsere-huhner-konnen-lesen/ http://www.example.com/unsere-huehner-koennen-lesen/

# BEGIN WordPress
... Der restliche unveränderte Code ...

Edit (August 2013): Kurz nach der Veröffentlichung des Artikels stand die Version 3.6 zum Download bereit. Wie bereits weiter oben erwähnt, sind die hier beschriebenen Änderungen ab der WP-Version 3.6 nicht mehr erforderlich.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *