it-swarm.com.de

Wie fordere ich eine minimale Bildgröße für das Hochladen an?

Ich brauche eine Möglichkeit, Autoren daran zu hindern, Bilder in bestimmten Dimensionen hochzuladen.

Angenommen, ich möchte nur das Hochladen von Bildern zulassen, die mindestens 400 x 400 Pixel groß sind. Wenn das Bild kleiner ist, sollte der Autor eine Fehlermeldung erhalten, dass das Bild zu klein ist.

Gibt es ein Plugin oder einen Code, mit dem dies erreicht werden kann?

17
boruchsiper

Fügen Sie diesen Code in die Datei functions.php Ihres Themas ein, um die minimalen Bildabmessungen zu begrenzen

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; 
}

Ändern Sie dann einfach die Anzahl der gewünschten Mindestabmessungen (in meinem Beispiel 640 und 480).

25
Maor Barazany

Ich ziehe es vor, den Code eines Kollegen nicht neu zu formatieren.
Das ist also fast die gleiche Antwort wie bei @ MaorBarazany, aber Überprüfung des MIME-Typs, Änderung der file['error']-Deklaration und Änderung des Funktionsnamensraums in diese wpse-Frage-ID.

Die Prüfung wird auch nur für Benutzer durchgeführt, die keine Administratoren sind.

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;
}

Ergebnis des Hakens:

blocked image uploads

11
brasofilo