When publishing articles in the WordPress editor, if you haven’t applied any specific formatting to your text, the editor will automatically format your code. For example, when you type a line of text, it automatically wraps it in <p> </p> tags. This feature can sometimes cause a lot of headaches, especially when you’re trying to apply custom styles to specific passages. So we need a workaround.
By using shortcodes, we can filter out WordPress editor’s auto-formatting.
Add the following code to your theme’s functions.php:
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);
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);
After adding this code, when writing posts, simply use the shortcode format [raw] content you want to exempt from WordPress auto-formatting [/raw] in the HTML editor mode. Any code within the raw tags will not have additional tags automatically added to it.