Le the_post_thumbnail sans srcset?

10

WordPress 4.4 ajoute plusieurs tailles d’image avec srcset lors de l’utilisation de la fonction the_post_thumbnail . Est-il possible d'obtenir une seule taille d'image sans srcset?

Je comprends qu'il est possible d'ajouter un filtre pour désactiver srcset de toutes les images, mais je souhaite désactiver le srcset uniquement lors de l'appel d'une taille de vignette spécifique (par exemple uniquement lors de l'appel d'une taille d'image complète).

    
posée jay 08.01.2016 - 14:35

1 réponse

13
  

Je souhaite désactiver le jeu de caractères uniquement lors de l'appel d'une vignette spécifique   taille (par exemple, uniquement lorsque vous appelez une taille d'image complète).

Voici deux idées (si je vous ai bien compris):

Approche n ° 1

Vérifions la taille à partir du filtre post_thumbnail_size . Si cela correspond à une taille correspondante (par exemple full ), nous nous assurons que le $image_meta est vide, avec le filtre wp_calculate_image_srcset_meta . De cette façon, nous pouvons nous libérer tôt de la fonction wp_calculate_image_srcset() (avant d'utiliser les filtres max_srcset_image_width ou wp_calculate_image_srcset pour le 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 balise <img> générée ne contiendra pas l'attribut srcset .

Pour le cas:

the_post_thumbnail();

nous pourrions correspondre à la chaîne 'post-thumbnail' 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' );
    
réponse donnée birgire 08.01.2016 - 15:09

Lire d'autres questions sur les étiquettes