Reputation: 341
I use shortcode to output the following html in a variable, but there are too many redundant code such as br and p tags, how to remove them? Thanks!
My shortcode function:
add_shortcode('portfolios', 'van_portfolios_shortcode');
function van_portfolios_shortcode( $atts, $content) {
extract(shortcode_atts(array(
'number'=>'9',
'slug'=>''
), $atts));
$str=van_portfolios($slug,$number,false);
return $str;
}
function van_process_shortcode($content) {
global $shortcode_tags;
// Backup current registered shortcodes and clear them all out
$orig_shortcode_tags = $shortcode_tags;
$shortcode_tags = array();
add_shortcode('portfolios', 'van_portfolios_shortcode');
// Do the shortcode (only the one above is registered)
$content = do_shortcode($content);
// Put the original shortcodes back
$shortcode_tags = $orig_shortcode_tags;
return $content;
}
add_filter('the_content', 'van_process_shortcode', 7);
Correct makeup is
<div class="portfolio-item">
<a class="overlay" href="#">
<h3>...</h3>
<p>...</p>
</a>
<div class="tools"><a href="#" class="zoomin" rel="lightbox">ZoomIn</a><a href="#" class="info">Info</a></div>
<a href="#" class="item">...</a>
</div>
Output:
<div class="portfolio-item">
<a class="overlay" href="#">
<br /><!--This <br />is redundant code-->
<h3>...</h3>
<p>...</p><p><!--This <p> is redundant code-->
</a>
<div class="tools"><a href="#" class="zoomin" rel="lightbox">ZoomIn</a><a href="#" class="info">Info</a></div>
<p><!--This <p> is redundant code--><a href="#" class="item">...</a>
</div>
Upvotes: 4
Views: 3984
Reputation: 11799
Try adding this code before content is displayed:
UPDATED
// From your question
$content = do_shortcode($content);
// Put the original shortcodes back
$shortcode_tags = $orig_shortcode_tags;
// Add this code
$content = preg_replace( '%<p> \s*</p>%', '', $content ); // Remove all instances of "<p> </p>" to avoid extra lines.
$Old = array( '<br />', '<br>' );
$New = array( '','' );
$content = str_replace( $Old, $New, $content );
// From your question
return $content;
Upvotes: 4