Yükleme için Minimum Görüntü Boyutu Nasıl Gerekir?


17

Yazarların belirli boyutlardaki resimleri yüklemelerini kısıtlamak için bir yola ihtiyacım var.

Yalnızca en az 400 piksel x 400 piksel resim yüklemeye izin vermek istediğimi varsayalım. Görüntü boyutu daha küçükse, yazar görüntünün çok küçük olduğuna dair bir hata bildirimi almalıdır.

Bunu başarabilecek bir eklenti veya kod var mı?

Yanıtlar:


25

Bu kodu temanızın function.php dosyasına ekleyin , minimum resim boyutlarını sınırlandırın

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

Ardından, istediğiniz minimum boyutların sayısını değiştirin (örneğimde 640 ve 480)


Teşekkürler! Bir gönderi küçük resmi ekliyorsak, bu işlevi ÇALIŞTIRMAK için herhangi bir yol var mı?
Arthur Dos Santos Dias

Bu, bir dosyayı her yüklediğinizde, onu kategorize etmeden veya küçük resim olarak atamadan önce hala sadece bir dosyadır. Seçtiğiniz bir önek / sonek içeren dosyanın adına dayalı bir koşul ekleyebilir ve küçük resminizi dosya olarak adlandırın, dosya adı bu koşulu karşılıyorsa işlevi çalıştırmayın.
Maor Barazany

Satır 14 referanslarının "genişlik" yerine "yükseklik" olması gerekir, ancak aksi takdirde tam olarak ihtiyacım olan buydu.

11

Bir meslektaşının kodunu yeniden biçimlendirmemeyi tercih ederim.
Yani, bu @ MaorBarazany's ile hemen hemen aynı cevaptır, ancak mime türünü kontrol etmek, file['error']bildirimi değiştirmek ve işlev ad alanını bu wpse Soru Kimliğine değiştirmek.

Ayrıca, denetim yalnızca yönetici olmayan kullanıcılar için de yapılır .

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

Kancanın sonucu:

engellenen resim yüklemeleri


Bunu seviyorum ve bir cazibe gibi çalışır. Ancak, bir sorun var: Bu filtreyi yalnızca belirli yazı türlerine uygulamak istersem, kullanıcılar Medya Kitaplığından bu gereksinimleri karşılamayan başka bir yazı türüne (boyut gereksinimleri olmadan) yüklenen bir görüntü seçebilirler.
cfx

Bunu yalnızca öne çıkan resim yüklüyor olmamızın bir yolu var mı?
deathlock
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.