मीडिया अपलोडर का उपयोग करके गलत-आकार की छवियों के अपलोड को अस्वीकार करें


12

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

मुझे पता है कि मैं किसी भी कस्टम अपलोडर के साथ ऐसा कर सकता हूं, लेकिन मैं इसे नियमित रूप से मीडिया अपलोडर के साथ करना पसंद करूंगा। मुझे wp_handle_upload_prefilter के बारे में भी पता है जो मैं पहले से ही फ़ाइल नाम को मान्य करने और सामान्य आवश्यकताओं के आधार पर कस्टम त्रुटि संदेश उत्पन्न करने के लिए उपयोग करता हूं। अभी हमें जो भी फ़ील्ड अपलोड करना है, उसके आधार पर अपलोड को अस्वीकार करने के लिए कस्टम आवश्यकताओं का उपयोग करने का एक तरीका है।

मुझे अपलोड में पोस्ट इमेज से डिफरेंट फीचर्ड इमेज के बारे में भी पता है लेकिन मुझे प्री-सेव सॉल्यूशन चाहिए था।

यह कुछ इस तरह दिखेगा:

यहाँ छवि विवरण दर्ज करें

wp_handle_upload_prefilterहम किस क्षेत्र के बारे में सूचित कर रहे हैं (या इसी तरह) के बारे में कोई विचार ?


दिलचस्प सवाल। मैं सोच रहा हूं, आम तौर पर बोल रहा हूं, अपने कस्टम मीडिया अपलोडर मोडल स्क्रिप्ट के माध्यम से एक कस्टम चर पास करें जो आप रास्ते में आगे भेदभाव के लिए पारित कर सकते हैं। यह एकमात्र तरीका हो सकता है, हालांकि मैं इसके बारे में 100% निश्चित नहीं हूं। आपको उस जानकारी की आवश्यकता होगी, यदि आप उस पर जाते हैं और उसे देखते हैं। बाद में वापस आएं और उस ठोस जानकारी के साथ अपना प्रश्न पूरा करें या, यदि आप इसे स्वयं हल करते हैं, तो उत्तर के रूप में अपना समाधान पोस्ट करें। सौभाग्य!
निकोलाई

यदि मैं कहता हूं कि कस्टम का मतलब है कि वर्डप्रेस मीडिया अपलोडर का कस्टम उपयोग, उदाहरण के लिए यहां चर्चा की गई है
निकोलाई 19

हाँ, मैंने इससे पहले फ्लैश अपलोडर के दिनों में कुछ ऐसा किया है। मैं इस समय एक क्लीनर के लिए जा रहा था, लेकिन यह संभव नहीं हो सकता है। उस पर गौर करेंगे, धन्यवाद!
moraleida

मैं आपको सुनता हूं, लेकिन मुझे नहीं लगता कि यह ऐसा करने का तरीका बुरा है। इसके अलावा, जैसा कि मैंने कहा, मैं इसे करने का दूसरा तरीका नहीं देखता / जानता हूं, लेकिन हो सकता है कि किसी और को ज्ञान के साथ-साथ यह स्पष्ट करना पड़े।
निकोलाई

1
क्या आप इससे आगे निकल रहे हैं? यदि नहीं, लेकिन आपके पास कुछ कोड हैं जिन पर आप काम कर रहे हैं, तो इसे पोस्ट करें। मैं सवाल करने के लिए एक इनाम सेटअप करने के लिए तैयार हूँ अगर वहाँ इसे और अधिक नींव है।
निकोलाई

जवाबों:


4

आपके हैंडलर में, यदि आप 'त्रुटि' सेट करते हैं, तो त्रुटि संदेश प्रदर्शित होगा और अपलोड को रद्द कर देगा

add_filter( 'wp_handle_upload_prefilter', 'custom_upload_filter' );

function custom_upload_filter( $file ) {
    $image_info   = getimagesize( $file['tmp_name'] );
    $image_width  = $image_info[0];
    $image_height = $image_info[1];

    if ( $image_with !== 800 || $image_height !== 600 ) {
        $file['error'] = __( 'Images must be sized exactly 800 * 600', 'your_textdomain' );
    }
    return $file;
}

यदि आपका उपयोगकर्ता एक अलग आकार अपलोड करने का प्रयास करता है, तो संदेश यह होगा:

thefile.png has failed to upload due to an error  
Size must be exactly 800 * 600

ध्यान दें कि wp_handle_upload_prefilterअपलोड प्रसंस्करण में बहुत जल्दी आता है, इसलिए आप परीक्षण करना चाहते हैं कि क्या फ़ाइल ठीक से अपलोड की गई है (HTTP दृष्टिकोण से) और आकार का परीक्षण करने से पहले एक छवि है।

Ref: wp_handle_upload()कोर फ़ाइल में funtionwp-admin/includes/file.php


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