Come Richiedere una Dimensione Minima per il Caricamento delle Immagini?
Ho bisogno di un modo per impedire agli autori di caricare immagini al di sotto di dimensioni specifiche.
Ad esempio, voglio consentire solo il caricamento di immagini che siano almeno 400px x 400px. Se le dimensioni dell'immagine sono inferiori, l'autore dovrebbe ricevere un avviso di errore che indica che l'immagine è troppo piccola.
Esiste un plugin o un codice che possa realizzare questo?

Aggiungi questo codice al file functions.php del tuo tema, e limiterà le dimensioni minime delle immagini
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"=>"Le dimensioni dell'immagine sono troppo piccole. La larghezza minima è {$minimum['width']}px. La larghezza dell'immagine caricata è $width px");
elseif ($height < $minimum['height'])
return array("error"=>"Le dimensioni dell'immagine sono troppo piccole. L'altezza minima è {$minimum['height']}px. L'altezza dell'immagine caricata è $height px");
else
return $file;
}
Poi basta cambiare i numeri delle dimensioni minime che vuoi (nel mio esempio sono 640 e 480)

Grazie! C'è qualche modo per NON eseguire questa funzione se stiamo includendo una miniatura del post?

Questa funzione viene eseguita ogni volta che carichi un file, nella fase in cui è ancora solo un file, prima di categorizzarlo o assegnarlo come miniatura. Puoi aggiungere una condizione basata sul nome del file con un prefisso/suffisso a tua scelta, e nominare i file delle miniature in base a questo, quindi non eseguire la funzione se il nome del file soddisfa quella condizione.

La riga 14 fa riferimento a "width" che deve essere sostituito con "height", ma per il resto era esattamente ciò di cui avevo bisogno.

Preferisco non riformattare il codice di un collega.
Quindi, questa è quasi la stessa risposta di @MaorBarazany, ma con il controllo del tipo mime, la modifica della dichiarazione file['error']
e il cambio del namespace della funzione per corrispondere all'ID della domanda wpse.
Inoltre, il controllo avviene solo per gli utenti che non sono amministratori.
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 )
{
// Tipo mime con dimensioni, controllo per uscire prima
$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'] =
'Immagine troppo piccola. La larghezza minima è '
. $minimum['width']
. 'px. La larghezza dell\'immagine caricata è '
. $img[0] . 'px';
elseif ( $img[1] < $minimum['height'] )
$file['error'] =
'Immagine troppo piccola. L\'altezza minima è '
. $minimum['height']
. 'px. L\'altezza dell\'immagine caricata è '
. $img[1] . 'px';
return $file;
}
Risultato dell'hook:

Amo questo e funziona perfettamente. Tuttavia, c'è un problema: se voglio applicare questo filtro solo su determinati tipi di post, gli utenti possono comunque scegliere un'immagine dalla Libreria Multimediale che è stata caricata in un altro tipo di post (senza i requisiti di dimensione) che non soddisfa questi requisiti.
