tags from wordpress shortcodes via a php functon
Looking for a php function (non-jQuery or wpautop modification) approach to remove from within wordpress.
I tried this but it does not w
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.