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;
}
O regex poderia ser mais simples e, infelizmente, isso também priva você da classe exclusiva wp-image-xxx
(onde xxx é o ID do anexo) da <img>
tag, mas é a mais segura que eu poderia criar para remover apenas links em torno das imagens de anexo e deixar links em texto bem como links intactos em torno de imagens sem anexo.
Se você não se importa com imagens sem anexo e deseja que todas as imagens no conteúdo da postagem não sejam agrupadas em links de qualquer maneira, isso deve ser suficiente:
function attachment_image_link_remove_filter( $content ) {
$content =
preg_replace(array('{<a[^>]*><img}','{/></a>}'), array('<img','/>'), $content);
return $content;
}
Eu posso ver isso quebrando coisas, se o interior de uma âncora terminar em algum outro elemento de fechamento automático, como uma <br />
etiqueta. Isso seria raro, obviamente, mas eu recomendaria usar a primeira versão, embora mais longa.