Cum să impui o dimensiune minimă pentru încărcarea imaginilor?
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?
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)

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

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.

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.

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:

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.
