使用functions.php从图像中删除链接


8

我正在寻找一种从帖子内容中的图像中删除附件链接的方法。

我想将此添加到主题中的functions.php中。我知道您可以在每个图像的基础上禁用此功能,但是我只想在我的functions.php页面中执行一次。有任何想法吗?

谢谢,巴特

Answers:


5
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;
}

正则表达式可能更简单,但不幸的是,这也使您失去了标记的唯一类wp-image-xxx(其中xxx是附件ID)<img>,但这是我想出的最安全的方法,它删除附件图像周围的链接并保留文本链接以及完整的非附件图像周围的链接。

如果您不关心非附件图像,并且无论如何都不想将帖子内容中的所有图像都包裹在链接中,那么就足够了:

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

如果锚点的内部以其他一些自闭合元素(例如<br />标签)结尾,我可以看到它会破坏事情。显然,那很少见,但是我建议使用第一个虽然更长的版本。


谢谢,这很完美!我最终使用了第一个,是的,这节省了我很多时间。
digitalbart 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.