The_post_thumbnail sem srcset?

10

O WordPress 4.4 adiciona vários tamanhos de imagem com srcset ao usar a função the_post_thumbnail . É possível obter apenas um tamanho de imagem sem srcset?

Eu entendo que é possível adicionar um filtro para desabilitar srcset de todas as imagens, mas eu quero desabilitar o srcset somente ao chamar um tamanho de miniatura específico (por exemplo, somente ao chamar o tamanho total da imagem). / p>     

por jay 08.01.2016 / 14:35

1 resposta

13
  

Desejo desativar o srcset somente ao chamar uma miniatura específica   tamanho (por exemplo, apenas ao chamar o tamanho total da imagem).

Aqui estão duas ideias (se bem entendi):

Abordagem # 1

Vamos verificar o tamanho do filtro post_thumbnail_size . Se ele corresponder a um tamanho correspondente (por exemplo, full ), verificamos se o $image_meta está vazio, com o filtro wp_calculate_image_srcset_meta . Dessa forma, podemos resgatar a partir da função wp_calculate_image_srcset() (antes de usar os filtros max_srcset_image_width ou wp_calculate_image_srcset para desativá-la):

/**
 * Remove the srcset attribute from post thumbnails 
 * that are called with the 'full' size string: the_post_thumbnail( 'full' )
 *
 * @link http://wordpress.stackexchange.com/a/214071/26350
 */
 add_filter( 'post_thumbnail_size', function( $size )
 {
     if( is_string( $size ) && 'full' === $size )
         add_filter( 
             'wp_calculate_image_srcset_meta',  
              '__return_null_and_remove_current_filter' 
         );   
    return $size;
 } );

// Would be handy, in this example, to have this as a core function ;-)
function __return_null_and_remove_current_filter ( $var )
{
    remove_filter( current_filter(), __FUNCTION__ );
    return null;
}

Se tivermos:

the_post_thumbnail( 'full' );

a tag <img> gerada não conterá o atributo srcset .

Para o caso:

the_post_thumbnail();

poderíamos combinar a string 'post-thumbnail' size.

Abordagem # 2

Também podemos adicionar / remover o filtro manualmente com:

// Add a filter to remove srcset attribute from generated <img> tag
add_filter( 'wp_calculate_image_srcset_meta', '__return_null' );

// Display post thumbnail
the_post_thumbnail();

// Remove that filter again
remove_filter( 'wp_calculate_image_srcset_meta', '__return_null' );
    
por birgire 08.01.2016 / 15:09