Tôi chỉ muốn tắt srcset khi gọi kích thước hình thu nhỏ cụ thể (ví dụ: chỉ khi gọi kích thước hình ảnh đầy đủ).
Đây là hai ý tưởng (nếu tôi hiểu bạn chính xác):
Cách tiếp cận số 1
Hãy kiểm tra kích thước từ post_thumbnail_size
bộ lọc. Nếu nó phù hợp với kích thước tương ứng (ví dụ full
) thì chúng tôi đảm bảo $image_meta
trống, với wp_calculate_image_srcset_meta
bộ lọc. Bằng cách đó, chúng tôi có thể bảo lãnh sớm từ wp_calculate_image_srcset()
chức năng (sớm hơn so với sử dụng max_srcset_image_width
hoặc wp_calculate_image_srcset
bộ lọc để vô hiệu hóa nó):
/**
* 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;
}
Nếu chúng ta có:
the_post_thumbnail( 'full' );
sau đó <img>
thẻ được tạo sẽ không chứa srcset
thuộc tính.
Đối với trường hợp:
the_post_thumbnail();
chúng ta có thể khớp 'post-thumbnail'
chuỗi kích thước.
Cách tiếp cận số 2
Chúng tôi cũng có thể thêm / xóa bộ lọc theo cách thủ công với:
// 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
bộ lọc khi chức năng kết thúc