Čeština: zalomení

Nedělitelné mezery za předložkami — česká typografie ve WordPressu

Čeština: zalomení vloží nedělitelnou mezeru za jednopísmenné předložky a spojky (k, s, v, z, o, u, a, i), aby nikdy nezůstaly osamocené na konci řádku. Funguje na obsahu, titulcích i ACF textových a WYSIWYG polích — bez nutnosti volat vlastní filtr v šabloně.

Hlavní funkce

  • Funguje na the_content, the_title, the_excerpt i ACF textová/textarea/WYSIWYG pole
  • Pracuje jen s textovými uzly — nezasahuje dovnitř HTML tagů, atributů, <script> ani <pre>
  • Idempotentní — opakovaným průchodem se mezery nezdvojí
  • Twig filtr `nbsp` se zaregistruje jen pokud web používá Timber (žádná zbytečná integrace navíc)
  • Veřejná funkce `smrk_nbsp()` pro ruční použití i mimo standardní filtry

Jak to funguje

Text se nejdřív rozdělí na HTML tagy a čisté textové úseky pomocí vyvážené párové analýzy tagů (ne naivní regex nad celým HTML), takže se nedělitelná mezera nikdy nevloží doprostřed atributu nebo tagu.

Na každý textový úsek se pak aplikuje regulární výraz `/(?<=^|\s|\()([ksvzaiou])(\s)+/iu`, který jednopísmennou předložku/spojku na začátku slova spojí s následujícím slovem přes `&nbsp;`.

Srovnání s alternativami

Alternativa k pluginům Zalomení, Čeština: zalomení řádků nebo Sirotci (sierotki) — s integrací do ACF bez nutnosti volat vlastní filtr v šabloně.

Časté dotazy

Funguje to i v ACF WYSIWYG poli, které vypisuju přímo bez filtru?
Ano — modul se hookuje i na acf/format_value pro textová, textarea a WYSIWYG pole, takže funkci nemusíš volat ručně.
Rozbije mi to HTML kód v obsahu?
Ne, filtr pracuje výhradně na textových uzlech mimo tagy a atributy.
Podporuje to i Timber/Twig šablony?
Ano, pokud web používá Timber, zaregistruje se navíc Twig filtr `nbsp`.