Disable WordPress automatic formatting on posts using a shortcode

If you often display code snippets on your WordPress blog, you know how bad WordPress automatic formatting can be. Happilly, with the help from a very cool shortcode you can be able to disable it on a certain portion of text.

The first thing to do is to add the following function to your functions.php file:

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);

Once done, you can use the [raw] shortcode in your posts:

[raw]Unformatted code[/raw]

If you're interested in WordPress shortcode, I'll be publishing a WordPress shortcodes related article on my blog Cats Who Code on thursday. Make sure you grabbed Cats Who Code RSS feed so you're not going to miss it!

Thanks to TheBinaryPenguin for this awesome shortcode!

Related Posts

Related Posts

No related posts.

4 Responses

Apr 25 2012 22:29

Thanks a lot for this ^^

I had tu put:

remove_filter(‘the_content’, ‘wpautop’);
remove_filter(‘the_content’, ‘wptexturize’);

add_filter(‘the_content’, ‘my_formatter’, 99);

at the end of plugin.php since remove_filter sent me an error

Looks like the order of includes changed

Sorry for my crappy English

Nov 13 2012 14:49

Sizeable Interactive’s Andy Stratton called out this technique last year for running the risk of breaking code dependent on the WordPress shortcode API—wptexturize and wpautop are actually pretty important for your blog to behave normally when using WordPress plugins, and adding a filter to ‘the_content’ instead of using the shortcode API is not best practice.

Read more on Andy’s article: http://theandystratton.com/2011/shortcode-autoformatting-html-with-paragraphs-and-line-breaks (This article is now also linked from the WordPress forum post which is credited above)

Jan 08 2013 19:33

Thanks a lot! It works :D I used it for Nectgen gallery..

Jan 15 2013 18:35

hi, i ad the function but it doesn’t work… I don’t understand…
could you please help me

Trackbacks:

Leave a Comment

* Name, Email, Comment are Required

WP Theme of the week

Sponsored Likebox