The_post_thumbnail बिना srcset के?


12

वर्डप्रेस 4.4 फ़ंक्शन srcsetका उपयोग the_post_thumbnailकरते समय कई छवि आकार जोड़ता है। क्या श्रीस्कैट के बिना केवल एक छवि आकार प्राप्त करना संभव है?

मैं समझता हूं कि srcsetसभी छवियों से अक्षम करने के लिए फ़िल्टर जोड़ना संभव है , लेकिन मैं srcsetकेवल एक विशिष्ट थंबनेल आकार को कॉल करते समय अक्षम करना चाहता हूं (उदाहरण के लिए केवल पूर्ण छवि आकार को कॉल करते समय)।

जवाबों:


13

मैं केवल विशिष्ट थंबनेल आकार को कॉल करते समय srcset को अक्षम करना चाहता हूं (उदाहरण के लिए केवल पूर्ण छवि आकार को कॉल करते समय)।

यहां दो विचार दिए गए हैं (यदि मैं आपको सही तरीके से समझता हूं):

दृष्टिकोण # १

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समारोह समाप्त होने पर आपको संभवतः फ़िल्टर को हटाने की भी आवश्यकता होती है
मार्क कपलुन

हमने उस दृष्टिकोण को जोड़ा जहां हम मैन्युअल रूप से फ़िल्टर कॉलबैक जोड़ते / हटाते हैं। मैं दूसरे दृष्टिकोण में गिनती उदाहरण का उपयोग करके इसे केवल एक बार चलाने के लिए प्रत्येक the_post_thumbnail () call @MarkKaplun
birgire

मैंने कोड स्निपेट को सरल बनाया, मुझे फिर से इस बारे में सोचने के लिए धन्यवाद ;-) @MarkKaplun
birgire

1
:) मुझे फ़िल्टरों में गुमनाम कार्यों के लिए अपनी नापसंद दिखाने का एक उत्पादक तरीका मिला :)
मार्क कपलुन

1
या "रन वन टाइम" पैरामीटर होना चाहिए add_filter। यह पैटर्न वास्तव में आम है।
मार्क कपलुन '
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.