问题描述
我正在寻找一种从帖子内容的图像中删除附件链接的方法。
我想添加到我的主题的 functions.php 。我知道你可以在每个图像的基础上禁用这个,但我想在我的 functions.php 页面中这样做一次。有任何想法吗?
谢谢,巴特
最佳解决方案
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;
}
正则表达式可能更简单,不幸的是,这也剥夺了<img>
标签的独特的 wp-image-xxx
(其中 xxx 是附件 ID) 类,但它是最安全的,只能删除附件图像上的链接,并离开 in-text 链接以及完整的 non-attachment 图像链接。
如果您不关心 non-attachment 图像,并希望邮件内容中的所有图像都不会包含在链接中,那么这应该是足够的:
function attachment_image_link_remove_filter( $content ) {
$content =
preg_replace(array('{<a[^>]*><img}','{/></a>}'), array('<img','/>'), $content);
return $content;
}
如果锚的内部结束于其他一些 self-closing 元素 (如<br />
标记),我可以看到它破坏了事情。这很罕见,显然,但我建议使用第一个,虽然更长的版本。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。