The_post_thumbnail ไม่มี srcset หรือไม่


12

WordPress 4.4 เพิ่มรูปภาพหลายขนาดด้วยsrcsetเมื่อใช้the_post_thumbnailฟังก์ชัน เป็นไปได้หรือไม่ที่จะได้ขนาดภาพเดียวโดยไม่มี srcset?

ฉันเข้าใจว่าเป็นไปได้ที่จะเพิ่มตัวกรองเพื่อปิดการใช้งานsrcsetจากภาพทั้งหมด แต่ฉันต้องการที่จะปิดการใช้งานsrcsetเฉพาะเมื่อเรียกขนาดภาพขนาดย่อที่เฉพาะเจาะจง (ตัวอย่างเช่นเมื่อโทรขนาดภาพเต็มเท่านั้น)

คำตอบ:


13

ฉันต้องการปิดการใช้งาน 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ตัวกรองออกเมื่อฟังก์ชั่นสิ้นสุด
Mark Kaplun

ฉันได้เพิ่มวิธีการที่เราเพิ่ม / ลบตัวกรองการเรียกกลับด้วยตนเอง ฉันใช้อินสแตนซ์การนับในวิธีอื่น ๆ เพื่อเรียกใช้เพียงครั้งเดียวสำหรับแต่ละ the_post_thumbnail () โทร @MarkKaplun
birgire

ฉันทำให้ข้อมูลโค้ดง่ายขึ้นขอบคุณที่ให้ฉันคิดถึงสิ่งนี้อีกครั้ง ;-) @MarkKaplun
birgire

1
:) ฉันเพิ่งพบวิธีการผลิตเพื่อแสดงความไม่ชอบฟังก์ชั่นที่ไม่ระบุชื่อของฉันในตัวกรอง :)
Mark Kaplun

1
หรือควรจะมีพารามิเตอร์ "ใช้เวลาหนึ่ง" add_filterเพื่อ รูปแบบนี้เป็นเรื่องธรรมดาจริงๆ
Mark Kaplun
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.