Cum să impui o dimensiune minimă pentru încărcarea imaginilor?

13 sept. 2011, 05:10:29
Vizualizări: 27.3K
Voturi: 18

Am nevoie de o modalitate de a restricționa autorii să încarce imagini sub anumite dimensiuni.

Să zicem că vreau să permit încărcarea doar a imaginilor care au cel puțin 400px x 400px. Dacă dimensiunea imaginii este mai mică, autorul ar trebui să primească o notificare de eroare că imaginea este prea mică.

Există vreun plugin sau cod care poate realiza acest lucru?

0
Toate răspunsurile la întrebare 2
4
27

Adaugă acest cod în fișierul functions.php al temei tale și va limita dimensiunile minime ale imaginilor

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"=>"Dimensiunile imaginii sunt prea mici. Lățimea minimă este de {$minimum['width']}px. Lățimea imaginii încărcate este de $width px");

    elseif ($height <  $minimum['height'])
        return array("error"=>"Dimensiunile imaginii sunt prea mici. Înălțimea minimă este de {$minimum['height']}px. Înălțimea imaginii încărcate este de $height px");
    else
        return $file; 
}

Apoi doar schimbă numerele pentru dimensiunile minime pe care le dorești (în exemplul meu sunt 640 și 480)

13 sept. 2011 17:48:24
Comentarii

Mulțumesc! Există vreo modalitate de a NU executa această funcție dacă includem o imagine miniatură a articolului?

Arthur Dos Santos Dias Arthur Dos Santos Dias
24 ian. 2012 13:34:06

Această funcție rulează de fiecare dată când încărcați un fișier, în etapa în care este încă doar un fișier, înainte de a-l categorisi sau de a-l atribui ca imagine miniatură. Puteți adăuga o condiție bazată pe numele fișierului cu un prefix/sufix la alegere și să denumiți fișierele destinate miniaturilor conform acestui model, apoi să nu executați funcția dacă numele fișierului respectă acea condiție.

Maor Barazany Maor Barazany
22 feb. 2012 01:38:59

La linia 14, referințele care conțin "width" trebuie înlocuite cu "height", dar în rest acest cod a fost exact ceea ce aveam nevoie.

User User
26 apr. 2012 20:36:55

Funcționează minunat de bine cu Gutenberg!

Jules Jules
1 apr. 2020 17:00:28
2
12

Prefer să nu reformatez codul unui coleg.
Deci, acesta este aproape același răspuns ca cel al lui @MaorBarazany, dar verificând tipul mime, schimbând declarația file['error'] și modificând namespace-ul funcției pentru această întrebare wpse.

De asemenea, verificarea are loc doar pentru utilizatorii care nu sunt administratori.

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 )
{
    // Tipul mime cu dimensiuni, verificare pentru a ieși mai devreme
    $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'] = 
            'Imaginea este prea mică. Lățimea minimă este ' 
            . $minimum['width'] 
            . 'px. Lățimea imaginii încărcate este ' 
            . $img[0] . 'px';

    elseif ( $img[1] < $minimum['height'] )
        $file['error'] = 
            'Imaginea este prea mică. Înălțimea minimă este ' 
            . $minimum['height'] 
            . 'px. Înălțimea imaginii încărcate este ' 
            . $img[1] . 'px';

    return $file;
}

Rezultatul hook-ului:

încărcare imagine blocată

26 nov. 2012 05:03:55
Comentarii

Ador asta și funcționează perfect. Totuși, există o problemă: dacă vreau să aplic acest filtru doar pe anumite tipuri de postări, utilizatorii pot totuși alege o imagine din Biblioteca Media care a fost încărcată într-un alt tip de postare (fără cerințele de dimensiune) și care nu îndeplinește aceste cerințe.

cfx cfx
16 mai 2014 04:32:12

Există vreo modalitate de a aplica asta doar dacă încărcăm o imagine reprezentativă?

deathlock deathlock
14 oct. 2016 12:11:50