छवि आयाम विशेषताएँ निकालने के लिए फ़िल्टर करें?


35

मैं एक तरल चौड़ाई चौड़ाई सीएसएस टेम्पलेट पर आधारित एक साइट पर काम कर रहा हूं जो छवियों पर अधिकतम चौड़ाई को सेट करता है जिसमें उनके कॉलम की चौड़ाई है, और मुझे इनलाइन चौड़ाई और ऊंचाई आयाम विशेषताओं को हटाने की आवश्यकता है जो वर्डप्रेस छवियों को जोड़ता है।

मैं इस फ़िल्टर के साथ अपने चित्रित चित्रों के साथ कर रहा हूँ:

add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10, 3 );

function remove_thumbnail_dimensions( $html, $post_id, $post_image_id ) {
    $html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
    return $html;
}

मुझे पता है कि यदि आवश्यक हो तो मैं the_content में एक ही फ़िल्टर लागू कर सकता हूं । लेकिन क्या ऐसा करने का एक बेहतर तरीका है?


सबसे पहले, बहुत उपयोगी कोड के लिए धन्यवाद। यह पूरी तरह से img टैग से चौड़ाई और ऊंचाई विशेषताओं को स्ट्रिप करने के लिए काम करता है, लेकिन किसी कारण से यह कैप्शन शोर्ट को स्ट्रिप करने के लिए भी लगता है यदि एक है। क्या किसी को पता है कि यह क्यों है और इसे कैसे ठीक किया जाए?
डोमिनिक पी

1
शायद आपको इसे अपने प्रश्न के रूप में पोस्ट करना चाहिए? यह खदान से पर्याप्त रूप से अलग है कि यह अपनी प्रतिक्रिया के योग्य है। फिर भी, मैं कोशिश करूंगा और उत्तर दूंगा ... किसी और को यह उत्तर खोजने और उसी समस्या के होने के लिए: आपकी समस्या यह है कि फ़ंक्शन img_caption_shortcode, जो कैप्शन शोर्ट को प्रोसेस करता है, को कैप्शन शोर्टकोड विशेषताओं में एक चौड़ाई निर्दिष्ट करने की आवश्यकता होती है। अन्यथा, यह कैप्शन को पूरी तरह से छोड़ देता है और [caption]शोर्टकोड टैग के अंदर लिपटी हुई सामग्री को वापस करता है ।
गोल्डनप्पल्स

यदि आप एक परिभाषित चौड़ाई के बिना कैप्शन शॉर्टकोड का उपयोग करने में सक्षम होना चाहते हैं, तो आपको अपने कैप्शन मार्कअप को एक फ़ंक्शन में परिभाषित करना होगा जो फ़िल्टर पर झुका हुआ है img_caption_shortcode। एक फ़ंक्शन के लिए कोड लिखना जैसे कि मैं यहां टिप्पणियों में फिट कर सकता हूं, से अधिक है, हालांकि।
गोल्डनप्लस

@goldenapples, आपके उपयोगी उत्तर के लिए धन्यवाद। जैसा कि आपने सुझाव दिया है और मैंने यहां एक नया प्रश्न पूछा है: wordpress.stackexchange.com/questions/32931/… । उस पर कोई इनपुट बहुत सराहना की जाएगी। जैसा कि मैंने सवाल में समझाया है, मुझे यकीन नहीं है कि फ़िल्टर img_caption_shortcodeसमस्या को हल करने के लिए पर्याप्त होगा।
डोमिनिक पी

1
हो सकता है कि आपको अपनी वास्तविक सामग्री को देखे बिना आप जो करने की कोशिश कर रहे हैं, उसकी बड़ी तस्वीर मुझे याद आ रही हो, लेकिन क्या इसे सीएसएस का उपयोग करके केवल रीमेड नहीं किया जा सकता है? यदि आप अपनी छवियों पर अधिकतम-चौड़ाई का उपयोग कर रहे हैं, तो आपको ऊंचाई जोड़कर ऊंचाई की समस्या को जीतने में सक्षम होना चाहिए: ऑटो; अपनी सामग्री छवियों के लिए।
बाइनरीऑर्गेनिक

जवाबों:


36

सबको शुक्रीया!

Image_send_to_editor फिल्टर एक मैं के लिए ... धन्यवाद देख रहा था था @ यह ओर इशारा करते हुए के लिए t31os।

यहाँ अब मेरे कार्य हैं।

add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10 );
add_filter( 'image_send_to_editor', 'remove_thumbnail_dimensions', 10 );

function remove_thumbnail_dimensions( $html ) {
    $html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
    return $html;
}

यह पुनर्प्राप्त की गई छवियों से इनलाइन आयाम विशेषताओं को निकालता है the_post_thumbnail(), और उन विशेषताओं को संपादक में जोड़े गए नए चित्रों से जोड़े जाने से रोकता है। के माध्यम से wp_get_attachment_imageया अन्य संबंधित कार्यों (वहाँ कोई हुक) के माध्यम से प्राप्त छवियों से उन्हें नहीं हटाता है , लेकिन उन मामलों को आवश्यक के रूप में टेम्पलेट फ़ाइलों में संसाधित किया जा सकता है।


1
मैं regex से \ s को हटाना पड़ा। उसके पश्चात इसने ठीक से काम किया। मुझे लगता है कि यह इसलिए था क्योंकि ऊंचाई की सेटिंग पर आखिरी डबलक्वाट के बाद मेरे पास अनुगामी स्थान नहीं था।
मैटसेले

1
@MattSlay क्या यह सिर्फ मेरे लिए साइट की सामग्री को स्थायी रूप से संशोधित करने के साथ एक समस्या है? एक संवेदनशील विषय को वेबसाइट की सामग्री को सही प्रारूप में लाने के लिए उसे संशोधित नहीं करना चाहिए। मैं इस ब्लॉग पोस्ट की तरह - से फ़िल्टर को हटाने image_send_to_editorऔर इसके बजाय इसे जोड़ने के लिए वोट करता हूं । यह प्रस्तुति तर्क को सामग्री से अलग करता है। the_content
BFTrick

1
@BFTrick - मेरे लिए संदर्भ की तरह लगता है। एक उत्तरदायी विषय के लिए, मैं आपसे सहमत हूँ क्योंकि आप इस तरह से संसाधित होने वाली मौजूदा सामग्री पर निर्भर नहीं हो सकते हैं, और आपको नहीं पता कि क्या अगले विषय को स्थापित करने के लिए उन आयाम विशेषताओं की आवश्यकता होगी। मेरे मामले में, मैं एक ऐप बना रहा था, जहां विषय सामग्री का अभिन्न अंग था, इसलिए मैंने छवियों को संसाधित करने का कम प्रोसेसर-गहन तरीका चुना जब वे पहली बार जोड़े गए थे। लेकिन आप एक अच्छी बात करते हैं।
गोल्डनप्लस

2
चेतावनी: यह उत्तर वर्डप्रेस 3.5.1 में छवि कैप्शन को तोड़ता है।
वायर्ड

5

इस लिपि को थोड़ा संशोधित किया। सहायता के लिए धन्यवाद!

add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10 );
add_filter( 'image_send_to_editor', 'remove_thumbnail_dimensions', 10 );
// Genesis framework only
add_filter( 'genesis_get_image', 'remove_thumbnail_dimensions', 10 );
// Removes attached image sizes as well
add_filter( 'the_content', 'remove_thumbnail_dimensions', 10 );
function remove_thumbnail_dimensions( $html ) {
    $html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
    return $html;
}

5
सावधान, हालांकि। The_content को फ़िल्टर करने से youtube वीडियो और किसी भी अन्य चौड़ाई / ऊंचाई की विशेषता भी फ़िल्टर हो जाएगी।
21 नवंबर को माइकनागरेट

1
यह सच है, लेकिन उत्तरदायी साइट में यह एक अच्छी बात हो सकती है। अगर किसी को छवियों के लिए यह करने की आवश्यकता है तो किसी को अन्य मीडिया के लिए भी करने की आवश्यकता है।
BFTrick

1

यदि आप "गैलरी" के रूप में function.php में छवि का आकार सेट करते हैं

add_image_size( 'gallery', 200, 120, true );

आप "गैलरी" जैसे विशिष्ट छवि आकार की चौड़ाई और ऊँचाई को हटा सकते हैं:

add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10, 4 );

function remove_thumbnail_dimensions( $html, $post_id, $post_image_id,$post_thumbnail) {
    if ($post_thumbnail=='gallery'){
    $html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
    }
    return $html;
}

0

उस फ़िल्टर को लागू करने the_contentसे उसे सभी सामग्री में आग लग जाएगी। यह प्रभावी होगा, लेकिन आपकी साइट के प्रदर्शन और लोड समय को प्रभावित कर सकता है। बेहतर होगा यदि आप वर्डप्रेस को बताएं कि जब आप पहली बार में चित्र डालें तो इनलाइन की चौड़ाई और ऊँचाई टैग न डालें।

दुर्भाग्य से, स्क्रिप्ट जो वास्तव में छवि को सम्मिलित करती हैं, जावास्क्रिप्ट में निर्मित होती हैं और टिनीएमसीई wysiwyg संपादक के साथ बातचीत करती हैं। इसमें सीधे हुक करने का एक तरीका हो सकता है, लेकिन मानक add_filter()कॉल का उपयोग नहीं करना।


1
image_send_to_editorयहाँ काम पर एक फिल्टर नहीं होगा ?
t31os

@ t31os - मुझे लगता है कि मैं क्या देख रहा था! न जाने क्यों मैंने उस हुक को पहले नहीं देखा था।
गोल्डनएप्पल्स

वैसे मुझे उम्मीद है कि यह मदद करता है, ऐसा लगता है कि यह चाल हो सकती है ... वापस रिपोर्ट करें और हमें बताएं। :)
t31os

@ t31os हाँ, यह चाल चली! धन्यवाद! मैं इसे एक उत्तर के रूप में पोस्ट करूंगा, जब तक कि आप इसे पहले प्राप्त नहीं करते।
गोल्डनप्पल्स

2
आप इसके लिए जाते हैं, मैं बहुत उपद्रव नहीं कर रहा हूँ, खुश आप एक समाधान खोजने में सक्षम थे ...;)
t31os
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.