Pregunta

Estoy trabajando en un sitio basado en una plantilla css ancho de fluido que fija un máximo de ancho en las imágenes para el ancho de la columna que los contienen, y tengo que quitar la línea Ancho y altura atributos de dimensión que WordPress añade 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;
}

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

¿Fue útil?

Solución

Gracias a todos!

La image_send_to_editor Filtro era la que yo estaba buscando ... gracias @ t31os para señalarlo.

Aquí está mi función 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 imágenes recuperadas con the_post_thumbnail(), y evita los atributos de ser añadido a las nuevas imágenes agregadas al editor. No eliminarlos de imágenes recuperadas a través wp_get_attachment_image u otras funciones relacionadas (no ganchos de allí), pero esos casos pueden ser tratados en los ficheros de plantillas cuando sea necesario.

Otros consejos

Modificado este guión 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;
}

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

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

Puede eliminar anchura y altura del tamaño de la imagen específica 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;
}

La aplicación de ese filtro a the_content se disparará por todo el contenido. Esto será efectivo, pero podría afectar el tiempo de carga y rendimiento de su sitio. Sería mejor si usted le dice a WordPress no insertar las etiquetas de anchura y altura en línea cuando insertar imágenes en el primer lugar.

Por desgracia, los scripts que insertar la imagen se construyen en JavaScript e interactuar con el editor TinyMCE WYSIWYG. Podría haber una manera de conectar a ella directamente, pero que no utilizan las llamadas add_filter() estándar.

Licenciado bajo: CC-BY-SA con atribución
scroll top