it-swarm.com.de

Das the_post_thumbnail ohne srcset?

Das WordPress 4.4 fügt mehrere Bildgrößen mit srcset hinzu, wenn die Funktion the_post_thumbnail verwendet wird. Ist es möglich, nur eine Bildgröße ohne srcset zu erhalten?

Ich verstehe, dass es möglich ist, einen Filter hinzuzufügen, um srcset für alle Bilder zu deaktivieren, aber ich möchte die srcset nur deaktivieren, wenn eine bestimmte Thumbnail-Größe aufgerufen wird (zum Beispiel nur, wenn die Vollbildgröße aufgerufen wird).

10
jay

Ich möchte das srcset nur beim Aufrufen einer bestimmten Thumbnail-Größe deaktivieren (zum Beispiel nur beim Aufrufen der Vollbildgröße).

Hier sind zwei Ideen (wenn ich dich richtig verstehe):

Ansatz Nr. 1

Lassen Sie uns die Größe mit dem post_thumbnail_size-Filter überprüfen. Wenn es mit einer entsprechenden Größe übereinstimmt (z. B. full), stellen wir sicher, dass der $image_meta mit dem wp_calculate_image_srcset_meta-Filter leer ist. Auf diese Weise können wir die wp_calculate_image_srcset() -Funktion vorzeitig beenden (vor der Deaktivierung mit den Filtern max_srcset_image_width oder wp_calculate_image_srcset):

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

Wenn wir haben:

the_post_thumbnail( 'full' );

dann enthält das generierte <img>-Tag nicht das Attribut srcset.

Im Falle:

the_post_thumbnail();

wir könnten die Zeichenfolge mit der Größe 'post-thumbnail' abgleichen.

Ansatz 2

Wir könnten den Filter auch manuell hinzufügen/entfernen mit:

// 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' );
13
birgire