nav-left cat-right
cat-right

Stop WordPress from Removing br and p Tags

WordPress has a bad habit of removing or reformatting br and p tags that are entered into posts and pages. It also does some other funky formatting that can be annoying at times.

Well, here’s a way to fix this issue.

Go into the theme editing area of WP admin. Add this code to your functions.php file, and save it.

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

Now, when writing a post/page, use [raw][/raw] tags to surround that parts of the post/page that you do not want formatted.

9 Responses to “Stop WordPress from Removing br and p Tags”

  1. [...] http://www.adammershon.com/stop-wordpress-from-removing-br-and-p-tags/ This entry was written by admin, posted on July 26, 2010 at 5:15 am, filed under Web Development, WordPress. Bookmark the permalink. Follow any comments here with the RSS feed for this post. Post a comment or leave a trackback: Trackback URL. « Tim Thumb Image Resizing [...]

  2. Adam, thanks for this. It saved me a lot of work this morning.

  3. sebastien says:

    that doesn’t work in wp3.0.1… :-/

  4. [...] each time you update wordpress… So you may want to bookmark this or save the info. Thanks to Adam Mershon __________________ Follow Me On [...]

  5. SanDiegoTim says:

    I’ve come across several different plugins and suggested solutions but this is the one that works best for me.

    The other solutions adversely affected all previously created pages that relied on the automatic tags. I only needed to fix certain sections where wordpress would enter a one sided or and throw off my validation.

    Using this solution allows me to fix just the areas where automated tags were not opened or closed properly.

    Thank you very much.

  6. SanDiegoTim says:

    For the amateurs out there like me, be sure to enter the code mentioned above on the very next line after the final php.

    I originally inserted the code after hitting an extra return (space) after the final php and ended up with a white screen whenever I tried to do execute an action in wordpress.

  7. Bryan Liff says:

    Or, the simple solution is to uncomment or add the tags you wish to allow (whitelist) in wp-includes/kses.php

Leave a Reply