remove empty <p> tags from wordpress shortcodes via a php functon
This is an old question, but I solved this today and thought I'd share.
In my case, I basically want to remove all the poorly formatted <p>
and <br>
tags, but then you want to add them back in correctly so that the text in the shortcode gets formatted correctly.
/* * Half column shortcode */ function custom_shortcode_half_column( $atts, $content = '') { $content = custom_filter_shortcode_text($content); return '<div class="half-column">'. $content .'</div>'; } add_shortcode( 'half-column', 'custom_shortcode_half_column' );/* * Utility function to deal with the way WordPress auto formats text in a shortcode. */ function custom_filter_shortcode_text($text = '') { // Replace all the poorly formatted P tags that WP adds by default. $tags = array("<p>", "</p>"); $text = str_replace($tags, "\n", $text); // Remove any BR tags $tags = array("<br>", "<br/>", "<br />"); $text = str_replace($tags, "", $text); // Add back in the P and BR tags again, remove empty ones return apply_filters('the_content', $text); }
This really should be the default way WordPress parses the shortcode $content parameter in my opinion.