loading

Stanislav Duben

Stanislav Duben ICQ: 66800432 email: duben@seznam.cz Skype: sduben

28. únor 2008

Wordpress převádí normální uvozovky na okrasné

WordPress převádí úvozovkySetkal jsem se s tím krátce po instalaci WordPressu na doménu www.osa-dekujem.cz a napsáním pár článků. Chtěl jsem uveřejnit html kód, který mohou návštěvníci vložit do svých stránek pokud chtějí podpořit můj web. Jenže pokaždé, když se pokusil vložit klasické úvozovky ", na stránce se objevily sice správně česky vypadající úvozovky, dole a nahoře, ale jako HTML kód se stal text nepoužitelný.

 

Začal jsem zkoušet všechno možné, vypnutí Texy!, editaci natvrdo v databázi. Ale nic nepomohlo. V databázi bylo všechno správně, ale na stránkách se pořád zobrazovaly okrasné úvozovky. Dostal jsem se do stavu, kdy se české úvozovky změnili pouze na horní, ale pořád jakési okrasné. ANSI kód byl místo očekávaného 0034 změněný na 8220. Samozřejmě, že takto použitý kód nikde nefungoval.

Nakonec jsem řešení objevil, WordPress mi prostě vnucuje formátování natvrdo přímo bez možnosti editace. Jediný způsob jak docílit změny okrasných úvozovek na korektní je přímo editace zdrojového kódu WordPressu.

V souboru /wp-includes/formating-php se musi upravit kus kodu

     $static_characters = array_merge(array('---', ' -- ', '--', 'xn–', '...', '``', '\'s', '\'\'', ' (tm)'), $cockney);
    $static_replacements = array_merge(array('—', ' — ', '–', 'xn--', '…', '“', '’s', '”', ' ™'), $cockneyreplace);

    $dynamic_characters = array('/\'(\d\d(?:’|\')?s)/', '/(\s|\A|")\'/', '/(\d+)"/', '/(\d+)\'/', '/(\S)\'([^\'\s])/', '/(\s|\A)"(?!\s)/', '/"(\s|\S|\Z)/', '/\'([\s.]|\Z)/', '/(\d+)x(\d+)/');
    $dynamic_replacements = array('’$1','$1‘', '$1″', '$1′', '$1’$2', '$1“$2', '”$1', '’$1', '$1×$2');

na tento:

     $static_characters = array_merge(array('---', ' -- ', '--', 'xn–', '...', '``', '\'s', '\'\'', ' (tm)'), $cockney);
    $static_replacements = array_merge(array('—', ' — ', '–', 'xn--', '…', '"', '’s', '”', ' ™'), $cockneyreplace);

    $dynamic_characters = array('/\'(\d\d(?:’|\')?s)/', '/(\s|\A|")\'/', '/(\d+)"/', '/(\d+)\'/', '/(\S)\'([^\'\s])/', '/(\s|\A)"(?!\s)/', '/"(\s|\S|\Z)/', '/\'([\s.]|\Z)/', '/(\d+)x(\d+)/');
    $dynamic_replacements = array('’$1','$1‘', '$1″', '$1′', '$1’$2', '$1"$2', '”$1', '’$1', '$1×$2');

Zkrátka natvrdo přepsat &#8220 na &#0034, nebo ho ze seznamu měněných znaků úplně odebrat. Negativem může být, že ostatní úvozovky se také začnou zobrazovat přesně tak jak byly zapsané. Ale pro mě osobně je to spíš pozitivum.

Snad tahle rada pomůže podobně tápajícím, protože žádné řešení na webu jsem v době řešení tohoto problému nenalezl. 

Komentáře   

Guest
0 #1 Guest 2008-05-14 06:18
Měl jsem stejný porblém na GadgetWorld.cz (magazin.gadgetworld.cz) a vyřešil jsem to tak, že jsem uzavřel každou uvozovku do tagu . Takhle: "
A je to.
Guest
0 #2 Guest 2008-12-09 10:25
:sad:

Přidat komentář


Bezpečnostní kód
Obnovit