अपलोड करने के लिए न्यूनतम छवि आयाम की आवश्यकता कैसे है?


17

मुझे छवियों को विशिष्ट आयामों को अपलोड करने से लेखकों को प्रतिबंधित करने का एक तरीका चाहिए।

मान लें कि मैं केवल उन छवियों को अपलोड करने की अनुमति देना चाहता हूं जो कम से कम 400px x 400px हैं। यदि छवि का आकार छोटा है, तो लेखक को एक त्रुटि सूचना मिलनी चाहिए कि छवि बहुत छोटी है।

क्या कोई प्लगइन या कोड है जो इसे पूरा कर सकता है?

जवाबों:


25

इस कोड को अपनी थीम के functions.php फ़ाइल में जोड़ें, और यह न्यूनतम छवि आयामों को सीमित करेगा

add_filter('wp_handle_upload_prefilter','tc_handle_upload_prefilter');
function tc_handle_upload_prefilter($file)
{

    $img=getimagesize($file['tmp_name']);
    $minimum = array('width' => '640', 'height' => '480');
    $width= $img[0];
    $height =$img[1];

    if ($width < $minimum['width'] )
        return array("error"=>"Image dimensions are too small. Minimum width is {$minimum['width']}px. Uploaded image width is $width px");

    elseif ($height <  $minimum['height'])
        return array("error"=>"Image dimensions are too small. Minimum height is {$minimum['height']}px. Uploaded image height is $height px");
    else
        return $file; 
}

तो बस आप चाहते हैं कि न्यूनतम आयामों की संख्या में परिवर्तन करें (मेरे उदाहरण में 640 और 480 है)


धन्यवाद! क्या इस फ़ंक्शन को चलाने का कोई तरीका नहीं है अगर हम एक पोस्ट थंबनेल सहित हैं?
आर्थर डॉस सैंटोस डायस

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

लाइन 14 संदर्भों को "ऊँचाई" द्वारा "चौड़ाई" को बदलने की आवश्यकता है लेकिन अन्यथा यह वही था जो मुझे चाहिए था।

11

मैं एक सहयोगी के कोड को पुन: स्वरूपित नहीं करना पसंद करता हूं।
तो, यह @ MaorBarazany के रूप में लगभग एक ही उत्तर है, लेकिन माइम प्रकार की जांच, file['error']घोषणा को बदलने और फ़ंक्शन नाम स्थान को इस wpse प्रश्न आईडी में बदल दिया है।

इसके अलावा, चेक केवल उन उपयोगकर्ताओं के लिए होता है जो प्रशासक नहीं हैं ।

add_action( 'admin_init', 'wpse_28359_block_authors_from_uploading_small_images' );

function wpse_28359_block_authors_from_uploading_small_images()
{
    if( !current_user_can( 'administrator') )
        add_filter( 'wp_handle_upload_prefilter', 'wpse_28359_block_small_images_upload' ); 
}

function wpse_28359_block_small_images_upload( $file )
{
    // Mime type with dimensions, check to exit earlier
    $mimes = array( 'image/jpeg', 'image/png', 'image/gif' );

    if( !in_array( $file['type'], $mimes ) )
        return $file;

    $img = getimagesize( $file['tmp_name'] );
    $minimum = array( 'width' => 640, 'height' => 480 );

    if ( $img[0] < $minimum['width'] )
        $file['error'] = 
            'Image too small. Minimum width is ' 
            . $minimum['width'] 
            . 'px. Uploaded image width is ' 
            . $img[0] . 'px';

    elseif ( $img[1] < $minimum['height'] )
        $file['error'] = 
            'Image too small. Minimum height is ' 
            . $minimum['height'] 
            . 'px. Uploaded image height is ' 
            . $img[1] . 'px';

    return $file;
}

हुक का परिणाम:

अवरुद्ध छवि अपलोड


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

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