Blog

Nedělitelné mezery bez pluginu

2 minuty čtení

Proč nechat předložky na konci řádku, když je můžeme elegantně umístit na začátek dalšího? 😉

/**
 * Přidání nedělitelných mezer za vybranými předložkami
 * 
 * @author Jan "Wacki" Vašák
 * @param string $content Obsah
 * @return string
 */
function add_non_breaking_spaces($content)
{
    // Regulární výraz pro hledání vybraných předložek (bez diakritiky)
    $pattern = '/(?<=\s|^)([aeiouvszk])\s+/iu';

    $newContent = preg_replace_callback($pattern, function ($matches) {
        return $matches[1] . '&nbsp;';
    }, $content);

    // Pokud došlo k chybě, vrátíme původní obsah
    if ($newContent === null) return $content;

    return $newContent;
}
// Místa, kde chceme aplikovat náš filtr
add_filter('the_title', 'add_non_breaking_spaces');
add_filter('the_content', 'add_non_breaking_spaces');
add_filter("acf_the_content", "add_non_breaking_spaces");

Tato krátká funkce, kterou si můžete jednoduše vložit do vašeho functions.php souboru, vám pomůže zabránit nechtěným zalomením slov v nadpisech a textech. Funguje tak, že automaticky vloží nedělitelnou mezeru &nbsp; po předložkách jako a, e, i, o, u, v, s, z, k. Tím se zajistí, že se předložky nikdy neoddělí od následujícího slova. Nebudete tak muset instalovat žádné pluginy.

Funkci lze aplikovat pomocí filtrů, jak je uvedeno výše. Např. pro nadpis, obsah stránky a nebo obsah vložení pomocí ACF pluginu. A nebo jako obyčejnou funkci.

// Aplikování na perex příspěvku
echo add_non_breaking_spaces(get_the_excerpt())
Načítám komentáře...