Newsletter 365tipů můžete číst zdarma. Placené předplatné je dobrovolná podpora, která pomáhá webu pokračovat.
Podpořit 365tipů

TIP#3347: Proč WordPress mění –parametr na jednu pomlčku?

Editor může ukazovat dva spojovníky, ale na webu se zobrazí typografická pomlčka. Nedělá to editor při psaní, ale WordPress při přípravě obsahu k zobrazení. Na vině je funkce wptexturize().

Co WordPress s textem dělá

wptexturize() nahrazuje některé běžné znaky typografickými variantami. Dva spojovníky -- převádí na kratší pomlčku. Zápis -- s mezerami převádí na delší pomlčku. Mění také uvozovky, apostrofy nebo tři tečky.

Proto může být v editoru pořád --parametr, zatímco na stránce už vidíte jediný znak. Filtr obsahu se používá až poté, co WordPress načte text z databáze, a před jeho zobrazením. Změna tedy nemusí znamenat, že se přepsal uložený text. (Dokumentace filtru the_content)

Pokud potřebujete zachovat přesný zápis

Příkazy, parametry a jiné zápisy, kde záleží na každém znaku, označte jako kód. WordPress podle dokumentace vynechává z texturizace obsah v prvcích <code> a <pre> a také v shortcodu [code].

To je obvykle lepší řešení než vypínat typografické úpravy na celém webu. Značka kódu dává WordPressu najevo, že daný text nemá upravovat.

DODATEK: Díváte-li se na tento tip na webu, tak v titulku je vidět právě to, jak onen převod funguje. nejsou tam dva spojovníky, ale pomlčka. Protože do titulku nelze propašovat HTML formátování. A zjenvě je to ještě chyba, protože 365tipů má tuhle funkci potlačenou a nemělo by k tomu docházet. A je to i ukázka toho, že tohle rozhodnutí tvůrců WordPressu je dost nešťastné.

Jak texturizaci vypnout pro obsah

Pokud chcete automatické úpravy vypnout v celém obsahu příspěvků a stránek, můžete do functions.php aktivní šablony nebo její child theme přidat:

remove_filter('the_content', 'wptexturize');

Stejnou úpravu lze místo functions.php umístit do vlastního pluginu. Pokud kód vkládáte do functions.php, child theme pomáhá uchovat úpravu při aktualizaci původní šablony. Více k tomu je v tipu Jak přidávat vlastní věci do šablony WordPressu.

Pozor, tento filtr nevypne jen převod dvojitých spojovníků. WordPress přestane v obsahu upravovat i další typografické znaky. Týká se filtru the_content, neznamená to automaticky vypnutí wptexturize() ve všech dalších částech webu.

Pokud potřebujete vypnout wptexturize() úplně, WordPress nabízí také filtr run_wptexturize. To je ale širší zásah: vypne texturizaci napříč místy, kde se funkce používá. (Dokumentace filtru run_wptexturize)

Co zvolit?

Vadí-li vám změna jen u příkazů nebo parametrů, označte je jako kód.

remove_filter() použijte až tehdy, když chcete odstranit typografické úpravy z celého obsahu. Vypínat kvůli jedné pomlčce všechny automatické opravy uvozovek a dalších znaků je zbytečně široké řešení.

POZNÁMKA: Druhé (starší) trénování SKILL pro psaní článku v Hermes. Tohle už je verze 2.0.0 a má dvoukrokové zpracování, nejprve rešerše a napíše „co chce psát“, stručně. Po odsouhlasení napíše článek. Ale také delší zadání, protože tady to nebyl jen titulek, ale základní kostra. A myslím si, že výsledek je dost dobrý. Nutno dodat, že od té doby Hermes Bot prošel dalšími změnami, včetně toho, že se sám učí z tvorby článků. Tenhle tip psal někdy více než před měsícem.