Problem:
I’m building something using Drew Morris’ Foundation 4 Theme for WordPress (http://fwp.drewsymo.com/) and it allows shortcodes like [row] and [column] to be used, so that content can be aligned to the grid.
The problem is, when those shortcodes are used with any sort of line break after them, wpautop() plays havoc with the markup. I could just disable wpauto() with `remove_filter( ‘the_content’, ‘wpautop’ );` but I want it to effect all other content.
Solution:
Wordpress 3.6 has an nice new tag called has_shortcode() which can be used along with some RegEx and preg_replace() to replace the offending <br /> tags. Here’s my first version… it can be improved but it’s working pretty well so far!
add_filter ('the_content', 'cleangridshortcodes');
function cleangridshortcodes($content) {
if(has_shortcode($content,'row') || has_shortcode($content,'column')) {
$patterns = array("/([row])
/","/([column(.*)])
/","/([/column])
/");
$replacements = array('$1','$1','$1');
$content = preg_replace($patterns, $replacements, $content);
}
return $content;
}