ฉันต้องการปิดการใช้งาน srcset เฉพาะเมื่อมีการเรียกขนาดภาพขนาดย่อที่เฉพาะเจาะจง (ตัวอย่างเช่นเฉพาะเมื่อโทรขนาดภาพเต็ม)
นี่คือสองแนวคิด (ถ้าฉันเข้าใจคุณถูกต้อง):
วิธีการ # 1
ตรวจสอบขนาดจาก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'สตริงขนาด
วิธีการ # 2
เราสามารถเพิ่ม / ลบตัวกรองด้วยตนเองด้วย:
// 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ตัวกรองออกเมื่อฟังก์ชั่นสิ้นสุด