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;
}
La expresión regular podría ser más simple y, desafortunadamente, esto también lo priva de la clase única wp-image-xxx
(donde xxx es el ID de archivo adjunto) de la <img>
etiqueta, pero es la más segura que se me ocurre para eliminar solo enlaces alrededor de imágenes de archivos adjuntos y dejar enlaces en el texto así como enlaces alrededor de imágenes no adjuntas intactas.
Si no le importan las imágenes que no están adjuntas y desea que todas las imágenes del contenido de la publicación no se envuelvan en enlaces de todos modos, esto debería ser suficiente:
function attachment_image_link_remove_filter( $content ) {
$content =
preg_replace(array('{<a[^>]*><img}','{/></a>}'), array('<img','/>'), $content);
return $content;
}
Sin embargo, puedo verlo rompiendo cosas, si el interior de un ancla termina en algún otro elemento de cierre automático, como una <br />
etiqueta. Obviamente, sería raro, pero recomendaría usar la primera versión, aunque más larga.