Answers:
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 />
标签)结尾,我可以看到它会破坏事情。显然,那很少见,但是我建议使用第一个虽然更长的版本。