remove empty <p> tags from wordpress shortcodes via a php functon remove empty <p> tags from wordpress shortcodes via a php functon wordpress wordpress

remove empty <p> tags from wordpress shortcodes via a php functon


Try inserting this code in your functions.php file:

remove_filter( 'the_content', 'wpautop' );add_filter( 'the_content', 'wpautop', 99 );add_filter( 'the_content', 'shortcode_unautop', 100 );

enter image description here


add_filter('the_content', 'cleanup_shortcode_fix', 10);

I found that it works if you specify 10 as the priority; no other number will work.


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.