Marc Blase

Stop WordPress from wrapping <img> up with <p>

Img: “WordPress, why you wanna wrap me up?”

WordPress: “You looked cold.”

Img: “Well I’m not.”

WordPress: “Oh.”

Here’s how to stop that from happening:

// stop wordpress from wrapping images in <p> tags
function filter_ptags_on_images($content) {
    // do a regular expression replace...
    // find all p tags that have just
    // <p>maybe some white space<img all stuff up to /> then maybe whitespace </p>
    // replace it with just the image tag...
    return preg_replace('/<p>\s*(<a .*>)?\s*(<img .* \/>)\s*(<\/a>)?\s*<\/p>/iU', '\1\2\3', $content);
}
// we want it to be run after the autop stuff... 10 is default.
add_filter('the_content', 'filter_ptags_on_images');
Published on April 20, 2012