When using shortcodes in WordPress like so:
[shortcode]
Content goes here...
[/shortcode]
And assuming that the shortcode wraps your content with another element, sort of like this:
function my_shortcode( $attr, $content )
{
return '<div class="my_shortcode">' . $content . '</div>';
}
add_shortcode('shortcode', 'my_shortcode');
The built-in WordPress wpautop
filter will add junk markup to your output:
<div class="my_shortcode">
</p>
<p>Content goes here...</p>
<p>
</div>
Adding copter_remove_crappy_markup()
to the shorcode will clean up the output:
function my_shortcode( $attr, $content )
{
$clean = copter_remove_crappy_markup($content);
return '<div class="my_shortcode">' . $clean . '</div>';
}
add_shortcode('shortcode', 'my_shortcode');
Resulting in:
<div class="my_shortcode">
<p>Content goes here...</p>
</div>
Thanks for your function. I have used it until I read about WordPress' built-in filter
shortcode_unautop
on http://www.paulund.co.uk/remove-line-breaks-in-shortcodes. I guess that's a better way to clean up the markup.