Mal wieder habe ich Stunden damit verbracht ein Problem zu fixen das mich fast in den Wahnsinn getrieben hat. WordPress bringt eine Funktion mit die bestimmte Zeichen in schöner aussehende Zeichen umwandelt. In meinem Fall machte es aus — einen m-dash (einen längeren Strich). Wenn man aber Codebeispiele posten möchte die normale — brauchen, ist das keine schöne Sache. WordPress bringt auch keinen Schalter mit mit dem man es abschalten kann. Codieren kann man sie nicht da sonst der Syntaxhighlighter nicht richtig funktioniert. Sehr Frustrierend.
Meine Suche begann bei diesem Syntaxhighlighter, aber nach einer Weile sah ich das es auch in nicht getaggten Blöcken umgewandelt wird, also musste WordPress dafür verantwortliche sein. Nun ist die Suche nach — bei Google gar nicht so einfach und so hangelte ich mich von einem Begriff zum nächsten. M-Dash, N-Dash, Double Hyphen, minusminus usw. Irgend wann fand ich dann tatsächlich Leute denen dieses Verhalten von WordPress auch nicht gefällt und die eine Lösung vorschlugen. PUH! Die Anpassung selbst ist recht einfach und findet in der wp-includes/formatting.php->wptexturize() statt. Hier werden diese Zeichen ersetzt. Man kann nun einzelne Zeichen aus den Array nehmen und das Ersetzen damit abschalten oder man nimmt den radikalen Ansatz wie ich und schaltet das komplette Ersetzen ab.
function wptexturize($text) {
return $text;
global $wp_cockneyreplace;
$output = '';
/* ... */
}
Einfach die zweite Zeile einfügen und man ist fertig.
FALSCH!
Diese Lösung hatte ich schon einmal vor ein paar Wochen ausprobiert ohne Erfolg. Zu dieser Zeit hab ich es dann einfach ignoriert und vergessen. Jetzt wollte ich es aber wirklich wissen und so schaute ich tiefer in den Code. Eine Ausgabe in der genannten Funktion sagte das alles ok ist. Die Änderung hatte also funktioniert, also musste es noch eine andere Stelle geben in der die gleiche Änderung stattfindet. Eine Suche nach — auf ein neues WordPresspaket brachte keine neuen Erkenntnisse und ich war schon kurz vorm Durchdrehen, da machte es dann doch noch Klick bei mir. Wenn es nicht im WordPresscore passiert, dann vielleicht in einem Plugin. Und da wurde ich dann fündig. Die gleiche Ersetzung findet in WP-Permalauts statt. Dieses Plugin sollte eigentlich nur ÄÖÜs usw. ersetzen, aber es ersetzt auch noch ein paar andere Zeichen… Die Anpassungen waren kein Problem jetzt wo ich die Stelle gefunden hatte.
Aus diesem Code
/* ... */
$wpl_chartable = array(
'raw' => array('ä' ,'Ä' ,'ö' ,'Ö' ,'ü' ,'Ü' ,'ß' ,'—' ,'–' ,'---' ,'--' ),
'in' => array(chr(228),chr(196),chr(246),chr(214),chr(252),chr(220),chr(223) ,chr(8212),chr(8211),'---' ,'--' ),
'perma' => array('ae' ,'Ae' ,'oe' ,'Oe' ,'ue' ,'Ue' ,'ss' ,'---' ,'--' ,'---' ,'--' ),
'post' => array('ä','Ä','ö','Ö','ü','Ü','ß','—','–','—','–'),
'feed' => array('ä','Ä','ö','Ö','ü','Ü','ß' ,'—','–','—','–'),
'utf8' => array(u8e('ä'),u8e('Ä'),u8e('ö'),u8e('Ö'),u8e('ü'),u8e('Ü'),u8e('ß') ,u8e('—') ,u8e('–') ,u8e('—') ,u8e('–') )
); #chartable
/* ... */
macht man einfach diese.
/* ... */
$wpl_chartable = array(
'raw' => array('ä' ,'Ä' ,'ö' ,'Ö' ,'ü' ,'Ü' ,'ß'),
'in' => array(chr(228),chr(196),chr(246),chr(214),chr(252),chr(220),chr(223)),
'perma' => array('ae' ,'Ae' ,'oe' ,'Oe' ,'ue' ,'Ue' ,'ss'),
'post' => array('ä','Ä','ö','Ö','ü','Ü','ß'),
'feed' => array('ä','Ä','ö','Ö','ü','Ü','ß' ),
'utf8' => array(u8e('ä'),u8e('Ä'),u8e('ö'),u8e('Ö'),u8e('ü'),u8e('Ü'),u8e('ß'))
); #chartable
/* ... */
Wer es nicht sieht, ich habe die letzten 4 Einträge in Arrays entfernt. Datei wieder hoch laden und nun sollte alles wie gewünscht funktionieren.
In der aktuellen Version 0.2 ist das gefixt. Eigentlich sieht es dann genauso aus wie du es angepasst hast
Super Danke für den Hinweis. Ich hab die beiden Versionen mal gegen gehalten und es ist wirklich nur das schon gesagte raus geflogen.