eliminar enlaces de imágenes usando functions.php


8

Estoy buscando una forma de eliminar el enlace del archivo adjunto de las imágenes en el contenido de la publicación.

Me gustaría agregar esto a functions.php en mi tema. Sé que puede deshabilitar esto en la publicación por imagen, pero me gustaría hacerlo solo una vez en mi página functions.php. ¿Algunas ideas?

Gracias Bart

Respuestas:


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

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.


Gracias esto funcionó perfecto! Terminé usando el primero y sí, esto me ahorró mucho tiempo.
digitalbart
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.