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;
}
L'expression régulière pourrait être plus simple et, malheureusement, cela vous prive également de la classe unique wp-image-xxx
(où xxx est l'ID de pièce jointe) de la <img>
balise, mais c'est la plus sûre que j'ai pu trouver pour supprimer uniquement les liens autour des images des pièces jointes et laisser des liens dans le texte ainsi que des liens autour d'images non attachées intactes.
Si vous ne vous souciez pas des images sans pièce jointe et que vous souhaitez que toutes les images du contenu de la publication ne soient pas encapsulées de toute façon, cela devrait suffire:
function attachment_image_link_remove_filter( $content ) {
$content =
preg_replace(array('{<a[^>]*><img}','{/></a>}'), array('<img','/>'), $content);
return $content;
}
Je peux le voir casser des choses cependant, si l'intérieur d'une ancre se termine par un autre élément à fermeture automatique, comme une <br />
balise. Ce serait rare, évidemment, mais je recommanderais d'utiliser la première version, bien que plus longue.