Come richiedere una dimensione minima dell'immagine per il caricamento?


17

Ho bisogno di un modo per impedire agli autori di caricare immagini sotto dimensioni specifiche.

Supponiamo che io voglia solo consentire il caricamento di immagini di almeno 400 x 400 pixel. Se la dimensione dell'immagine è più piccola, l'autore dovrebbe ricevere un avviso che indica che l'immagine è troppo piccola.

Esiste un plug-in o un codice che può farlo?

Risposte:


25

Aggiungere questo codice del vostro tema functions.php file e si limiterà Dimensioni minime di 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"=>"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; 
}

Quindi basta modificare i numeri delle dimensioni minime desiderate (nel mio esempio 640 e 480)


Grazie! C'è un modo per NON eseguire questa funzione se includiamo un'anteprima del post?
Arthur Dos Santos Dias,

Questo viene eseguito ogni volta che si carica un file, nel passaggio è ancora solo un file, prima di classificarlo o assegnarlo come anteprima. È possibile aggiungere una condizione in base al nome del file con un prefisso / suffisso di propria scelta e nominare i file in miniatura come file in questo modo, quindi non eseguire la funzione se il nome file soddisfa tale condizione.
Maor Barazany,

I riferimenti della riga 14 devono avere "larghezza" sostituita da "altezza", ma per il resto era esattamente quello di cui avevo bisogno.

11

Preferisco non riformattare il codice di un collega.
Quindi, questa è quasi la stessa risposta di @ MaorBarazany, ma controllando il tipo mime, cambiando la file['error']dichiarazione e cambiando lo spazio dei nomi delle funzioni in questo ID domanda di wump.

Inoltre, il controllo si verifica 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 )
{
    // 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;
}

Risultato del gancio:

caricamenti di immagini bloccati


Adoro questo e funziona come un fascino. 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.
cfr

C'è un modo per applicarlo solo se stiamo caricando l'immagine in primo piano?
Deathlock
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.