Come Richiedere una Dimensione Minima per il Caricamento delle Immagini?

13 set 2011, 05:10:29
Visualizzazioni: 27.3K
Voti: 18

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?

0
Tutte le risposte alla domanda 2
4
27

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)

13 set 2011 17:48:24
Commenti

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

Arthur Dos Santos Dias Arthur Dos Santos Dias
24 gen 2012 13:34:06

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.

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

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

User User
26 apr 2012 20:36:55

Funziona perfettamente con Gutenberg!

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

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:

caricamento immagini bloccato

26 nov 2012 05:03:55
Commenti

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.

cfx cfx
16 mag 2014 04:32:12

C'è un modo per applicarlo solo quando stiamo caricando un'immagine in evidenza?

deathlock deathlock
14 ott 2016 12:11:50