the_post_thumbnail
関数を使用するとき、WordPress 4.4はsrcset
で複数の画像サイズを追加します。 srcsetを使わずに1つの画像サイズだけを取得することは可能ですか?
すべての画像からsrcset
を無効にするフィルタを追加することは可能ですが、特定のサムネイルサイズを呼び出す場合にのみsrcset
を無効にすることをお勧めします(たとえば、フル画像サイズを呼び出す場合のみ)。
Srcsetを無効にしたいのは、特定のサムネイルサイズを呼び出すときだけです(たとえば、フルイメージサイズを呼び出すときだけ)。
これが2つのアイデアです(私があなたを正しく理解していれば):
post_thumbnail_size
フィルタからサイズをチェックしましょう。対応するサイズ(例:full
)と一致する場合は、$image_meta
フィルタを使用して、wp_calculate_image_srcset_meta
が空であることを確認します。こうすることで、wp_calculate_image_srcset()
関数から早期に回避することができます(無効にするためにmax_srcset_image_width
または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;
}
我々が持っているならば:
the_post_thumbnail( 'full' );
生成された<img>
タグはsrcset
属性を含みません。
その場合:
the_post_thumbnail();
'post-thumbnail'
サイズの文字列と一致させることができます。
手動でフィルタを追加/削除することもできます。
// 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' );