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

digitalbart
fuente

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.

Johannes Pille
fuente
Gracias esto funcionó perfecto! Terminé usando el primero y sí, esto me ahorró mucho tiempo.
digitalbart