supprimer les liens des images à l'aide de functions.php


8

Je cherche un moyen de supprimer le lien de la pièce jointe des images dans le contenu du message.

Je voudrais ajouter ceci au functions.php dans mon thème. Je sais que vous pouvez désactiver cela dans la publication par image, mais je voudrais le faire une seule fois dans ma page functions.php. Des idées?

Merci, Bart

Réponses:


5
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.


Merci, cela a fonctionné parfaitement! J'ai fini par utiliser le premier et oui, cela m'a fait gagner beaucoup de temps.
digitalbart
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.