Skip to content

Instantly share code, notes, and snippets.

@bitfade
Last active April 3, 2025 18:18
Show Gist options
  • Save bitfade/4555047 to your computer and use it in GitHub Desktop.
Save bitfade/4555047 to your computer and use it in GitHub Desktop.
WordPress - Remove empty p tags for custom shortcodes
<?php
add_filter("the_content", "the_content_filter");
function the_content_filter($content) {
// array of custom shortcodes requiring the fix
$block = join("|",array("col","shortcode2","shortcode3"));
// opening tag
$rep = preg_replace("/(<p>)?\[($block)(\s[^\]]+)?\](<\/p>|<br \/>)?/","[$2$3]",$content);
// closing tag
$rep = preg_replace("/(<p>)?\[\/($block)](<\/p>|<br \/>)?/","[/$2]",$rep);
return $rep;
}
@Shoora
Copy link

Shoora commented Apr 3, 2025

Is this still working? I am having that issue

i used this code

function clean_shortcodes($content) {
// List of shortcodes to process
$shortcodes = [
'item',
'itemalt'
];

// Process each shortcode
$content = array_reduce($shortcodes, function($carry, $shortcode) use ($content) {
    if (has_shortcode($carry, $shortcode)) {
        return preg_replace(
            "/(?:<p>|<br \/>)*\[(\/?{$shortcode})([^\]]*)\](?:<\/p>|<br \/>)*\s*/i",
            "[$1$2]",
            $carry
        );
    }
    return $carry;
}, $content);

return $content;

}
add_filter('the_content', 'clean_shortcodes', 10);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment