remover links de imagens usando o functions.php


8

Estou procurando uma maneira de remover o link do anexo das imagens no conteúdo da postagem.

Eu gostaria de adicionar isso ao functions.php no meu tema. Eu sei que você pode desabilitar isso na postagem por imagem, mas eu gostaria de fazer isso apenas uma vez na minha página functions.php. Alguma ideia?

Obrigado Bart

Respostas:


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;
}

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.


Graças isso funcionou perfeito! Acabei usando o primeiro e sim, isso me salvou muito tempo.
digitalbart
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.