Automatické formátování, které WordPress provádí při úpravě v Editoru, jak pod záložkou HTML je dvousečná zbraň. Při psaní článků hodně pomáhá, protože stačí udělat mezeru a hle, máme tu nový odstavec. Někdy ale automatický formátovač postihne amok a náš zamýšlený kód předělá k obrazu svému, který se vůbec neshoduje s původním plánem.
Existují sice pluginy, které výše zmíněný problém natvrdo odstraní, ale zase na druhou stranu přicházíme o veškerý komfort. Po dnešním návodu pochopíte, že můžete mít obojí.
Nejdříve do souboru šablony function.php vložíme následující kód:
function my_formatter($content) { $new_content = ''; $pattern_full = '{([raw].*?[/raw])}is'; $pattern_contents = '{[raw](.*?)[/raw]}is'; $pieces = preg_split($pattern_full, $content, -1, PREG_SPLIT_DELIM_CAPTURE); $matches = array(); foreach ($pieces as $piece) { if (preg_match($pattern_contents, $piece, $matches)) { $new_content .= $matches[1]; } else { $new_content .= wptexturize(wpautop($piece)); } } return $new_content; } remove_filter('the_content', 'wpautop'); remove_filter('the_content', 'wptexturize'); add_filter('the_content', 'my_formatter', 99);
Pomocí značek [raw] a [/raw] pak v příspěvcích definujeme oblast, kde automatické formátování nemá být použito. Uvedené řešení jsem čerpal z webu Wprecipes