Bagaimana Cara Membutuhkan Dimensi Gambar Minimum untuk Mengunggah?

17

Saya perlu cara untuk membatasi penulis agar tidak mengunggah gambar di bawah dimensi tertentu.

Katakanlah saya hanya ingin mengizinkan mengunggah gambar yang setidaknya 400px x 400px. Jika ukuran gambar lebih kecil, penulis harus mendapatkan pemberitahuan kesalahan bahwa gambar terlalu kecil.

Apakah ada plugin atau kode yang dapat melakukan ini?

boruchsiper
sumber

Jawaban:

25

Tambahkan kode ini ke file functions.php tema Anda , dan itu akan membatasi dimensi gambar minimum

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

Kemudian cukup ubah angka dimensi minimum yang Anda inginkan (dalam contoh saya adalah 640 dan 480)

Maor Barazany
sumber
Terima kasih! Apakah ada cara untuk TIDAK menjalankan fungsi ini jika kami menyertakan thumbnail postingan?
Arthur Dos Santos Dias
Ini berjalan setiap kali ketika Anda mengunggah file, pada langkah itu masih hanya file, sebelum Anda mengkategorikannya atau menetapkannya sebagai thumbnail. Anda dapat menambahkan kondisi berdasarkan nama file dengan awalan / akhiran pilihan Anda, dan beri nama thumbnail Anda menjadi file dengan ini, daripada tidak menjalankan fungsi jika nama file memenuhi kondisi itu.
Maor Barazany
Referensi Baris 14 harus memiliki "lebar" diganti dengan "tinggi" tetapi jika tidak, inilah yang saya butuhkan.
11

Saya lebih suka tidak memformat ulang kode kolega.
Jadi, ini adalah jawaban yang hampir sama dengan @ MaorBarazany, tetapi memeriksa tipe mime, mengubah file['error']deklarasi dan mengubah fungsi namespace ke wpse Question ID ini.

Selain itu, pemeriksaan hanya terjadi untuk pengguna yang bukan administrator .

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

Hasil kait:

unggahan gambar yang diblokir

brasofilo
sumber
Cintai ini dan itu bekerja seperti pesona. Namun, ada satu masalah: jika saya ingin menerapkan filter ini hanya pada jenis posting tertentu maka pengguna masih dapat memilih gambar dari Perpustakaan Media yang diunggah dalam jenis posting lain (tanpa persyaratan ukuran) yang tidak memenuhi persyaratan ini.
cfx
Apakah ada cara untuk menerapkan ini hanya jika kami mengunggah gambar unggulan?
deathlock