Tuesday, July 9, 2013

How to disable automatic formatting using a Shortcode in WordPress

Code snippet below will help you to disable automatic formatting of  your html content added in post/page.
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);



You must add this code in the in your functions.php file of your active theme. Once done, you can use the [raw] shortcode in your posts, here exemple:

[raw]Unformatted code[/raw]

Disqus Comments