मैं WP 4.4 में उत्तरदायी छवियों को कैसे अक्षम करूं?


37

मैंने सफलतापूर्वक अपने 4.3.1 को सभी https में बदल दिया। 4.4 पर अपडेट करने के बाद। मुझे नई srcsetविशेषता से समस्या है । जबकि srcछवियों के लिए विशेषता https का उपयोग करके सेट की गई है, लेकिन srcsetविशेषता http है। यह ब्राउज़र को किसी भी छवि को प्रदर्शित नहीं करने का कारण बनता है।

एक बेहतर समाधान की प्रतीक्षा करते हुए, मैं srcsetपूरी तरह से विशेषता को अक्षम करना चाहता हूं ताकि सभी छवियों में केवल एक srcविशेषता हो। मैं उसको कैसे करू?


2
मैं यह भी जानना चाहूंगा - इसकी हमारी वेबसाइट का सही गड़बड़ है!
क्रिस

मैंने बिना किसी सफलता के विभिन्न तरीकों की कोशिश की है लेकिन मैं मुख्य प्रश्न को नए तरीकों के लिए खुला छोड़ना चाहता था। मेरे प्रयासों का सबसे कठोर मैं जिम्मेदार होने के लिए add_filterलाइन में टिप्पणी कर default-filters.phpरहा था://add_filter( 'the_content', 'wp_make_content_images_responsive' );
brokkr

1
अक्षम उत्तरदायी छवियों के बजाय, आपको HTTP और HTTPS को मिलाकर देखना चाहिए क्योंकि उत्तरदायी छवियों की कार्यक्षमता समस्या का मूल नहीं है। मेरी सभी वेबसाइटें HTTPS के अंतर्गत हैं और srcsetवर्डप्रेस द्वारा सही तरीके से बनाई गई हैं। आप HTTP से HTTPS में कैसे चले गए?
साइबरमेट


लगता है बहुत स्वागत अब साफ हो गया। डबल पोस्टिंग के लिए माफी - रूट इश्यू (srcset को https का उपयोग करना चाहिए) भी उस सूत्र में हल किया जाता है जो मैंने wordpress.org पर शुरू किया था ( wordpress.org/support/topic/… ) मेरे बचाव में एक दिन बाद धागा बहुत सुंदर लग रहा था इसलिए जब इसे पुनर्जीवित किया गया। Joemcgill का धन्यवाद जिन्होंने इसे वहाँ पर हल किया।
ब्रुकक्र

जवाबों:


43

यहां कुछ चीजें दी गई हैं जिन्हें आप 4.4 में उत्तरदायी छवि समर्थन को हटाने का प्रयास कर सकते हैं:

/**
 * Disable responsive image support (test!)
 */

// Clean the up the image from wp_get_attachment_image()
add_filter( 'wp_get_attachment_image_attributes', function( $attr )
{
    if( isset( $attr['sizes'] ) )
        unset( $attr['sizes'] );

    if( isset( $attr['srcset'] ) )
        unset( $attr['srcset'] );

    return $attr;

 }, PHP_INT_MAX );

// Override the calculated image sizes
add_filter( 'wp_calculate_image_sizes', '__return_empty_array',  PHP_INT_MAX );

// Override the calculated image sources
add_filter( 'wp_calculate_image_srcset', '__return_empty_array', PHP_INT_MAX );

// Remove the reponsive stuff from the content
remove_filter( 'the_content', 'wp_make_content_images_responsive' );

लेकिन जैसा कि @cybmeta ने बताया कि समस्या कहीं और हो सकती है।

बल पर https srcset

आप wp_calculate_image_srcsetफ़िल्टर के साथ कुछ डीबगिंग कर सकते हैं और यहां तक ​​कि इस त्वरित-फ़िक्स को आज़मा सकते हैं :

add_filter( 'wp_calculate_image_srcset', function( $sources )
{
    foreach( $sources as &$source )
    {
        if( isset( $source['url'] ) )
            $source['url'] = set_url_scheme( $source['url'], 'https' );
    }
    return $sources;

}, PHP_INT_MAX );

url योजना सेट करने के लिए https। एक और तरीका यह होगा कि यह योजनाबद्ध हो //

अन्य set_url_scheme()विकल्पों के लिए कोडेक्स देखें:

$source['url'] = set_url_scheme( $source['url'], null );        
$source['url'] = set_url_scheme( $source['url'], 'relative' );

लेकिन आपको गहरी खुदाई करने और मूल कारण खोजने का प्रयास करना चाहिए।

अद्यतन करें:

हम wp_calculate_image_srcset()समारोह से पहले जमानत कर सकते थे :

add_filter( 'wp_calculate_image_srcset_meta', '__return_empty_array' );

फिर wp_calculate_image_srcsetया max_srcset_image_widthफिल्टर का उपयोग कर ।

टिकट # 41895 के अनुसार अपडेट किया गया , ताकि झूठी / अशक्त के बजाय एक खाली सरणी वापस आ सके।


बस यह पुष्टि करने के लिए कि दोनों दृष्टिकोण मेरे अनुसार प्रत्येक के लिए काम कर रहे थे, अक्षम srcset ने srcset को हटा दिया (और इसलिए 'निश्चित' चित्र वापस लाया) और https ने बलपूर्वक srcset url को बदलकर https कर दिया। दोनों दृष्टिकोणों ने मिश्रित सामग्री चेतावनी को हटा दिया।
ब्रुकक्र

4
add_filter( 'wp_calculate_image_srcset_meta', '__return_null' );समाधान मेरे लिए महान काम किया। धन्यवाद!
टिम बोवेन

यह सुनकर खुशी हुई।
बीरगाइर

यह एक सत्यापनकर्ता पर चेतावनी का कारण होगा: "आकार विशेषता केवल तभी निर्दिष्ट की जा सकती है जब srcset विशेषता भी मौजूद हो।"
माइकल रोजर्स

ऐसा लगता है कि आपने srcset फ़िल्टर किया है, लेकिन आकार विशेषता नहीं। @
मिचेलरोगर्स

13

ऐसा करने का सबसे सरल और साफ तरीका बस यही है:

add_filter( 'wp_calculate_image_srcset', '__return_false' );

यह कहने के लिए कि अन्य लोग क्या कह रहे हैं, हालांकि, srcset एक अच्छा विचार है और भविष्य (अब सबसे अच्छा अभ्यास) है, लेकिन अगर आपको अपनी साइट को काम करने के लिए एक त्वरित समाधान की आवश्यकता है, तो उपरोक्त स्निपेट बिना किसी हैकिंग के काम करता है।

स्रोत: WP कोर ब्लॉग


5
__return_falseइसके बजाय बस का उपयोग करें disable_srcset, wp उस जैसे सरल कार्यों के लिए कार्य करता है।
जेक

3
और आप दोनों सिर्फ झूठे वापस करने के लिए एक नया फ़ंक्शन नहीं बनाकर अपने कोड में सुधार कर सकते हैं। वर्डप्रेस ऐसा करने के लिए फ़ंक्शन प्रदान करता है। codex.wordpress.org/Function_Reference/_return_false
जेक

1
यह सही उपाय है। यह सुविधा wp_autop के रूप में अच्छी तरह से सोची गई है। मैं कला चित्र के साथ-साथ उत्तरदायी चित्र प्राप्त करने के लिए <चित्र> का उपयोग करता हूं, और यह पता नहीं लगाता है।
पीटर वोस्टर

1
@ जेक 1 से 10 के पैमाने पर, "केवल झूठे वापस करने के लिए एक नया फ़ंक्शन बनाना" वर्डप्रेस के बारे में -2 ब्लोट जोड़ता है। स्व-दस्तावेजीकरण कोड जिसे कोई भी (केवल एक WP देव) नहीं समझ सकता है।
महमूद अल-कुद्सी

1
@ MahmoudAl-Qudsi क्योंकि '__return_false' कितना भ्रामक है? वर्डप्रेस फोरम पर यह चर्चा, वर्डप्रेस फीचर को बंद करने के बारे में है। यह सिर्फ डिफ़ॉल्ट, बहुत बुनियादी और अच्छी तरह से प्रलेखित, वर्डप्रेस रिटर्न फ़ंक्शंस का उपयोग करने के लिए पागल है जो वर्डप्रेस में अंतर्निहित कार्य करता है। तथ्य यह है कि फ़ंक्शन का नाम "return_false" है, बहुत स्व-दस्तावेजीकरण है। कोशिश करो और लगता है कि यह क्या करता है?
जेक

7

सबसे अधिक संभावना है, आपकी srcsetविशेषताओं में URL गलत तरीके से HTTPS दिखा रहा है, क्योंकि सभी छवियों के URL आपके wp_options तालिका में साइट के विकल्प के मूल्य का उपयोग करके बनाए गए हैं। यदि आप HTTPS पर अपना फ्रंट एंड सर्व कर रहे हैं, तो आपको उन मानों (सेटिंग्स> जनरल के माध्यम से) को भी बदलना चाहिए।

यहां वर्डप्रेस समस्या ट्रैकिंग सिस्टम पर संबंधित टिकट है: https://core.trac.wordpress.org/ticket/34945


5

यह 1 पिक्सेल से अधिक की किसी भी छवि को समाप्त करके srcset कोड को अक्षम कर देगा।

add_filter( 'max_srcset_image_width', create_function( '', 'return 1;' ) );

लंबे समय में, आपको वास्तविक समस्या को ठीक करने का प्रयास करना चाहिए। फिर भी, यह काम करता है यदि आपको त्वरित सुधार की आवश्यकता है।



1
Create_function () के बारे में क्या? मुझे PHP 5.2 में भी काम करने के अपने जवाब पसंद हैं।
ओट्टो

2

सेटिंग्स में / सामान्य सुनिश्चित करें कि आपका वर्डप्रेस एड्रेस (URL) और साइट एड्रेस (URL) https://yourdomain.com पर सेट है

Http://wptavern.com/how-to-fix-images-not-loading-in-wordpress-4-4-ward-using-ssl देखें

जो मैकगिल, जिन्होंने वर्डप्रेस में उत्तरदायी छवियां प्राप्त करने के प्रयास का नेतृत्व करने में मदद की, ने भी फोरम थ्रेड में जवाब दिया और पुष्टि की क्री का सुझाव सही है, “यदि आप फ्रंट छोर पर HTTPS चला रहे हैं, तो आपको अपने घर और साइट के लिए यूआरएल बदलना चाहिए URL सेटिंग में> सामान्य इसलिए वे HTTPS योजना का उपयोग करते हैं, ”उन्होंने कहा।

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