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;
}
Regex có thể đơn giản hơn và thật không may, điều này cũng làm mất đi lớp duy nhất wp-image-xxx
(trong đó xxx là ID đính kèm) của <img>
thẻ, nhưng đó là cách an toàn nhất tôi có thể đưa ra để chỉ xóa các liên kết xung quanh hình ảnh đính kèm và để lại liên kết trong văn bản cũng như các liên kết xung quanh hình ảnh không đính kèm còn nguyên vẹn.
Nếu bạn không quan tâm đến hình ảnh không đính kèm và muốn tất cả hình ảnh trong nội dung bài đăng không được bọc trong các liên kết, thì điều này cũng đủ:
function attachment_image_link_remove_filter( $content ) {
$content =
preg_replace(array('{<a[^>]*><img}','{/></a>}'), array('<img','/>'), $content);
return $content;
}
Tôi có thể thấy nó phá vỡ mọi thứ, nếu bên trong của một neo kết thúc trong một số yếu tố tự đóng khác, chẳng hạn như một <br />
thẻ. Điều đó sẽ hiếm, rõ ràng, nhưng tôi khuyên bạn nên sử dụng phiên bản đầu tiên, mặc dù dài hơn.