Je souhaite désactiver le srcset uniquement lors de l'appel d'une taille de miniature spécifique (par exemple uniquement lors de l'appel de la taille d'image complète).
Voici deux idées (si je vous comprends bien):
Approche n ° 1
Vérifions la taille du post_thumbnail_size
filtre. S'il correspond à une taille correspondante (par exemple full
), nous nous assurons que le $image_meta
est vide, avec le wp_calculate_image_srcset_meta
filtre. De cette façon, nous pouvons renflouer tôt la wp_calculate_image_srcset()
fonction (avant d'utiliser les filtres max_srcset_image_width
ou wp_calculate_image_srcset
pour la désactiver):
/**
* 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;
}
Si nous avons:
the_post_thumbnail( 'full' );
alors la <img>
balise générée ne contiendra pas l' srcset
attribut.
Pour le cas:
the_post_thumbnail();
nous pourrions faire correspondre la 'post-thumbnail'
chaîne de taille.
Approche n ° 2
Nous pourrions également ajouter / supprimer le filtre manuellement avec:
// 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' );
wp_calculate_image_srcset_meta
filtre à la fin de la fonctionadd_filter
. Ce modèle est vraiment courant.