WordPress 4.4 přidává více velikostí obrázků s srcset
při použití funkce the_post_thumbnail
. Je možné získat pouze jednu velikost obrázku bez srcsetu?
Rozumím, že je možné přidat filtr pro zakázání srcset
ze všech obrázků, ale chci vypnout srcset
pouze při volání určité velikosti miniatury (například pouze při volání plné velikosti obrázku).
Chci vypnout srcset pouze při volání určité velikosti miniatury (například pouze při volání plné velikosti obrazu).
Zde jsou dva nápady (pokud vám správně rozumím):
Podívejme se na velikost z filtru post_thumbnail_size
. Pokud odpovídá odpovídající velikosti (např. full
), pak se ujistěte, že $image_meta
je prázdné, s filtrem wp_calculate_image_srcset_meta
. Tímto způsobem můžeme z funkce wp_calculate_image_srcset()
(dříve než pomocí filtrů max_srcset_image_width
nebo wp_calculate_image_srcset
vypnout filtry) předčasně odejít:
/**
* 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;
}
Pokud máme:
the_post_thumbnail( 'full' );
pak vygenerovaná značka <img>
nebude obsahovat atribut srcset
.
Pro případ:
the_post_thumbnail();
mohli bychom odpovídat řetězci velikosti 'post-thumbnail'
.
Můžeme také přidat/odebrat filtr ručně pomocí:
// 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' );