問題描述
我正在尋找一種從帖子內容的影像中刪除附件連結的方法。
我想新增到我的主題的 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。