Filtrar para remover os atributos da dimensão da imagem?

36

Estou trabalhando em um site com base em um modelo css de largura de fluido que define uma largura máxima em imagens para a largura da coluna que as contém, e eu preciso remover a largura em linha e height atributos de dimensão que o WordPress adiciona às imagens.

Estou fazendo isso com minhas imagens em destaque com 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;
}

Eu sei que posso aplicar o mesmo filtro ao the_content , se necessário. Mas existe uma maneira melhor de fazer isso?

    
por goldenapples 18.12.2010 / 05:54
fonte

4 respostas

37

Obrigado a todos!

O filtro image_send_to_editor foi o que eu estava procurando ... obrigado @ t31os por apontá-lo.

Aqui estão minhas funções agora.

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

Isso remove os atributos de dimensão inline das imagens recuperadas com the_post_thumbnail() e impede que esses atributos sejam adicionados a novas imagens adicionadas ao editor. Não os remove de imagens recuperadas através de wp_get_attachment_image ou outras funções relacionadas (sem ganchos), mas esses casos podem ser processados nos arquivos de modelos quando necessário.

    
por goldenapples 18.12.2010 / 23:15
fonte
5

Modificou este script um pouco. Obrigado pela ajuda!

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;
}
    
por MikeNGarrett 05.01.2011 / 19:57
fonte
1

se você definir o tamanho da imagem em function.php como "galeria"

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

você pode remover a largura e a altura do tamanho específico da imagem, como "galeria":

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;
}
    
por Tohid Golkar 29.01.2013 / 07:40
fonte
0

A aplicação desse filtro a the_content irá ativá-lo para todo o conteúdo. Isso será eficaz, mas poderá afetar o desempenho e o tempo de carregamento do seu site. Seria melhor se você dissesse ao WordPress para não inserir as tags de altura e largura inline quando inserir imagens em primeiro lugar.

Infelizmente, os scripts que realmente inserem a imagem são construídos em JavaScript e interagem com o editor wysiwyg do TinyMCE. Pode haver uma maneira de conectá-lo diretamente, mas não usando as chamadas add_filter() padrão.

    
por EAMann 18.12.2010 / 06:57
fonte