remove links from images using functions.php

I am looking for a way to remove the attachment link from images in the post content.

I would like to add this to the functions.php in my theme. I know you can disable this in the post on a per image basis, but I would like to do this just once in my functions.php page. Any ideas?

Read More

Thanks,
Bart

Related posts

Leave a Reply

1 comment

  1. add_filter( 'the_content', 'attachment_image_link_remove_filter' );
    
    function attachment_image_link_remove_filter( $content ) {
        $content =
            preg_replace(
                array('{<a(.*?)(wp-att|wp-content/uploads)[^>]*><img}',
                    '{ wp-image-[0-9]*" /></a>}'),
                array('<img','" />'),
                $content
            );
        return $content;
    }
    

    The regex could be simpler and unfortunately this also deprives you of the unique wp-image-xxx (where xxx is the attachment ID) class of the <img> tag, but it’s the safest one I could come up with to only remove links around attachment images and leave in-text links as well as links around non-attachment images intact.

    If you don’t care about non-attachment images and want all images within the post content to not be wrapped in links anyway, this should suffice:

    function attachment_image_link_remove_filter( $content ) {
        $content =
            preg_replace(array('{<a[^>]*><img}','{/></a>}'), array('<img','/>'), $content);
        return $content;
    }
    

    I can see it breaking things though, if the inside of an anchor ends in some other self-closing element, such as a <br /> tag. That would be rare, obviously, but I’d recommend using the first, though longer version.