¿Filtrar para eliminar los atributos de dimensión de la imagen?

36

Estoy trabajando en un sitio basado en una plantilla css de ancho fluido que establece un ancho máximo en las imágenes al ancho de la columna que las contiene, y necesito eliminar el ancho en línea y altura atributos de dimensión que WordPress agrega a las imágenes.

Lo estoy haciendo con mis imágenes destacadas con este filtro:

add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10, 3 );

function remove_thumbnail_dimensions( $html, $post_id, $post_image_id ) {
    $html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
    return $html;
}

Sé que puedo aplicar el mismo filtro a the_content , si es necesario. ¿Pero hay una mejor manera de hacer esto?

    
pregunta goldenapples 18.12.2010 - 05:54

4 respuestas

37

¡Gracias a todos!

El filtro image_send_to_editor era el que estaba buscando ... gracias @ t31os por señalarlo.

Aquí están mis funciones ahora.

add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10 );
add_filter( 'image_send_to_editor', 'remove_thumbnail_dimensions', 10 );

function remove_thumbnail_dimensions( $html ) {
    $html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
    return $html;
}

Esto elimina los atributos de dimensión en línea de las imágenes recuperadas con the_post_thumbnail() , y evita que esos atributos se agreguen a las nuevas imágenes agregadas al editor. No los elimina de las imágenes recuperadas a través de wp_get_attachment_image u otras funciones relacionadas (no hay enlaces), pero esos casos se pueden procesar en los archivos de plantillas cuando sea necesario.

    
respondido por el goldenapples 18.12.2010 - 23:15
5

Modificó este script un poco. Gracias por la ayuda!

add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10 );
add_filter( 'image_send_to_editor', 'remove_thumbnail_dimensions', 10 );
// Genesis framework only
add_filter( 'genesis_get_image', 'remove_thumbnail_dimensions', 10 );
// Removes attached image sizes as well
add_filter( 'the_content', 'remove_thumbnail_dimensions', 10 );
function remove_thumbnail_dimensions( $html ) {
    $html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
    return $html;
}
    
respondido por el MikeNGarrett 05.01.2011 - 19:57
1

si establece el tamaño de la imagen en function.php como una "galería"

add_image_size( 'gallery', 200, 120, true );

puede eliminar el ancho y el alto de un tamaño de imagen específico como "galería":

add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10, 4 );

function remove_thumbnail_dimensions( $html, $post_id, $post_image_id,$post_thumbnail) {
    if ($post_thumbnail=='gallery'){
    $html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
    }
    return $html;
}
    
respondido por el Tohid Golkar 29.01.2013 - 07:40
0

La aplicación de ese filtro a the_content lo activará para todo el contenido. Esto será efectivo, pero podría afectar el rendimiento y el tiempo de carga de su sitio. Sería mejor si le dices a WordPress que simplemente no inserte las etiquetas de ancho y altura en línea cuando insertas imágenes en primer lugar.

Desafortunadamente, los scripts que realmente insertan la imagen están incorporados en JavaScript e interactúan con el editor wysiwyg TinyMCE. Puede haber una forma de conectarse directamente a él, pero sin utilizar las llamadas add_filter() estándar.

    
respondido por el EAMann 18.12.2010 - 06:57

Lea otras preguntas en las etiquetas