add_image_size निकालें या अपडेट करें


16

मैं एक ऐसे विषय पर काम कर रहा हूं जिसमें कई छवि आकार हैं, जिनका उपयोग करके सही तरीके से परिभाषित किया गया है:

add_image_size( 'name', 500, 200, true );

मैं बच्चे के विषय से इन परिभाषित आकारों को ओवरराइड करना चाहूंगा:

add_image_size( 'new-name', 400, 300, true );

मुझे पता है कि मैं नए आकार जोड़ सकता हूं, लेकिन अगर मैं एक ही नाम जोड़ूं तो:

add_image_size( 'name', 400, 300, true );

फिर अभिभावक फ़ंक्शन कॉल का उपयोग किया जाता है - बच्चे को अनदेखा किया जाता है - अतिरिक्त नियमों को जोड़ने से अतिरिक्त छवियां जुड़ती हैं जो कभी भी उपयोग नहीं की जाएंगी - यह इतना बुरा नहीं है, लेकिन यह कुशल नहीं है।

क्या एक जोड़ा छवि आकार को डी-रजिस्टर करने का कार्य है?

चीयर्स!

रे


क्या आप कृपया पूरा कोड पोस्ट कर सकते हैं जो प्रासंगिक है? क्या add_image_size()कॉल में केवल नग्न रूप से बैठे functions.phpहैं, या वे ठीक से कॉलबैक के अंदर लिपटे हुए हैं, और अंदर आ गए हैं after_setup_theme? यह जानना कि आपके प्रश्न का उत्तर देना कितना महत्वपूर्ण है।
चिप बैनेट

हाय चिप - आपकी टिप्पणी के लिए धन्यवाद - आप सही कह रहे हैं कि यह after_setup_theme में लिपटा है - इसलिए यह सभी प्राथमिकताओं के बारे में फिर से है - मुझे हमेशा याद है!
क्यू स्टूडियो

जवाबों:


22

add_image_size( $name, $width, $height, $crop )समारोह सुंदर पर्याप्त एक ही का उपयोग कर एकाधिक कॉल को संभालने के लिए है $name। यह बस मौजूदा मूल्य को अधिलेखित करता है :

$_wp_additional_image_sizes[$name] = array( 'width' => absint( $width ), 'height' => absint( $height ), 'crop' => (bool) $crop );

तो इसका मतलब है कि कस्टम छवि आकार की मूल थीम की परिभाषा को ओवरराइड करने के लिए आपको बस इतना करना है कि पेरेंट थीम के कॉल के बाद आपकी कॉल add_image_size()फायर हो जाए

यह मानते हुए कि मूल विषय ऐसा है:

function parent_theme_setup() {
    add_image_size( 'name', 500, 200, true );
    add_image_size( 'new-name', 400, 300, true );
}
add_action( 'after_setup_theme', 'parent_theme_setup' );

तब पैरेंट थीम की add_image_size()कॉल after_setup_themeहुक पर डिफ़ॉल्ट प्राथमिकता (यानी 10) में आग लगाती है ।

(नोट: यदि कॉलबैक में कॉल लपेटे नहीं जाते हैं , तो वे plugins_loadedहुक पर प्राथमिकता से फायर करते हैं 10।)

यहाँ महत्वपूर्ण हिस्सा है: बच्चे की थीम functions.phpफ़ाइल पहले पार्स की गई है पेरेंट थीम के , इसलिए यदि आप अपने add_image_size()कॉल्स को फायर करने के लिए एक ही हुक का उपयोग करते हैं, तो वे पेरेंट थीम के add_image_size()कॉल्स से ओवरराइड हो जाएंगे ।

समाधान यह है कि बच्चे के थीम को सुनिश्चित करने के लिए बाद में हुक या कम प्राथमिकता का उपयोग किया जाएadd_image_size() माता-पिता के थीम के बाद कॉल फायर हो जाती है।

यह चाल चलनी चाहिए, इस बात की परवाह किए बिना कि माता-पिता थीम अपनी कॉल को कैसे फायर करते हैं:

function child_theme_setup() {
    add_image_size( 'name', 400, 300, true );
}
add_action( 'after_setup_theme', 'child_theme_setup', 11 );

ध्यान दें कि हम एक ही after_setup_themeहुक का उपयोग करते हैं , लेकिन प्राथमिकता के साथ शुरू होने वाले उच्च प्राथमिकता (कम संख्या) से कम प्राथमिकता (उच्च संख्या) के क्रम में (यानी 11इसके बजाय 10कॉलबैक आग का उपयोग करें) 0। इसलिए प्राथमिकता के बाद कॉलबैक हुक में 11आग लग जाएगी। कॉलबैक प्राथमिकता में शामिल है ।10

यह भी ध्यान दें कि after_setup_themeहुक ही आग के बादplugins_loaded , हुक तो यह कॉलबैक अभी भी, माता पिता के विषय को पार कर जाएगी जनक विषय है, भले ही _doing_it_wrong()एक उपयुक्त कॉलबैक में इस तरह के कॉल, एक उपयुक्त हुक में शौकीन लपेटकर नहीं द्वारा।


उत्कृष्ट - धन्यवाद चिप! - मैं उन दोनों को एक ही प्राथमिकता पर था - माता-पिता और सभी ठीक काम करने के बाद बच्चे को वापस भेज दिया।
क्यू स्टूडियो

यदि कोई प्लगइन add_image_size :(
Zhianc

1

यदि कोई व्यक्ति केवल अतिरिक्त छवि आकारों को अनसेट करना चाहता है, तो आयामों को बदलने के विपरीत, remove_image_size (स्ट्रिंग $ नाम) , उदाहरण के लिए उपयोग करें

function pinboard_child_theme_setup( $sizes) {

    $image_size_names = array('thumbnail', 'medium', 'large',
        'slider-thumb', 'blog-thumb', 'teaser-thumb', 'gallery-1-thumb',
        'gallery-2-thumb', 'gallery-3-thumb', 'image-thumb', 'video-thumb');

    $image_size_names_length = count($image_size_names);
    for($x = 0; $x < $image_size_names_length; $x++) {
        remove_image_size($image_size_names[$x]);
    }   
}
add_action( 'after_setup_theme', 'pinboard_child_theme_setup', 11);

-1

आपके chile theme में आपको उपयोग करने की आवश्यकता होगी add_action( 'after_setup_theme','new-name');


नया-नाम यहाँ फ़ंक्शन का नाम है या आप अपने मुख्य फ़ंक्शन के लिए कभी भी नाम का उपयोग कर रहे हैं
रॉबिन

अपने उत्तर में एक स्पष्टीकरण जोड़ें: यह समस्या क्यों और कैसे हल करता है? ध्यान दें कि new-nameएक अमान्य कॉलबैक नाम है।
FUXIA

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