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