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;
}
Il regex potrebbe essere più semplice e sfortunatamente questo ti priva anche della classe unica wp-image-xxx
(dove xxx è l'ID allegato) del <img>
tag, ma è la più sicura che potrei trovare per rimuovere solo i collegamenti intorno alle immagini degli allegati e lasciare collegamenti nel testo così come i collegamenti intorno alle immagini non allegate intatti.
Se non ti interessano le immagini non allegate e desideri che tutte le immagini all'interno del contenuto del post non vengano comunque racchiuse nei link, questo dovrebbe essere sufficiente:
function attachment_image_link_remove_filter( $content ) {
$content =
preg_replace(array('{<a[^>]*><img}','{/></a>}'), array('<img','/>'), $content);
return $content;
}
Riesco a vederlo spezzare le cose, tuttavia, se l'interno di un'ancora termina in qualche altro elemento a chiusura automatica, come un <br />
tag. Sarebbe raro, ovviamente, ma consiglierei di usare la prima, sebbene versione più lunga.