Làm cách nào để yêu cầu kích thước hình ảnh tối thiểu để tải lên?


17

Tôi cần một cách để hạn chế các tác giả tải lên hình ảnh dưới các kích thước cụ thể.

Nói rằng tôi chỉ muốn cho phép tải lên hình ảnh ít nhất 400px x 400px. Nếu kích thước hình ảnh nhỏ hơn, tác giả sẽ nhận được thông báo lỗi rằng hình ảnh quá nhỏ.

Có một plugin hoặc mã có thể thực hiện điều này?

Câu trả lời:


25

Thêm mã này để của chủ đề của bạn functions.php tập tin, và nó sẽ hạn chế Kích thước ảnh tối thiểu

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

Sau đó, chỉ cần thay đổi số lượng kích thước tối thiểu bạn muốn (trong ví dụ của tôi là 640 và 480)


Cảm ơn! Có cách nào để KHÔNG chạy chức năng này nếu chúng tôi đang đưa vào hình thu nhỏ của bài đăng không?
Arthur Dos Santos Dias

Điều này chạy mỗi khi bạn tải lên một tệp, trong bước nó vẫn chỉ là một tệp, trước khi bạn phân loại nó hoặc gán nó dưới dạng hình thu nhỏ. Bạn có thể thêm một điều kiện dựa trên tên của tệp với tiền tố / hậu tố bạn chọn và đặt tên cho hình thu nhỏ của bạn thành tệp bằng cách này, hơn là không chạy chức năng nếu tên tệp đáp ứng điều kiện đó.
Maor Barazany

Tham chiếu dòng 14 cần phải có "chiều rộng" thay thế bằng "chiều cao" nhưng nếu không thì đây chính xác là những gì tôi cần.

11

Tôi không thích định dạng lại mã của đồng nghiệp.
Vì vậy, đây gần như là câu trả lời tương tự như của @ MaorBarazany, nhưng kiểm tra loại mime, thay đổi file['error']khai báo và thay đổi không gian tên hàm thành ID câu hỏi wpse này.

Ngoài ra, kiểm tra chỉ xảy ra đối với người dùng không phảiquản trị viên .

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

Kết quả của móc:

tải lên hình ảnh bị chặn


Yêu cái này và nó hoạt động như một lá bùa. Tuy nhiên, có một vấn đề: nếu tôi chỉ muốn áp dụng bộ lọc này cho một số loại bài đăng nhất định thì người dùng vẫn có thể chọn một hình ảnh từ Thư viện phương tiện được tải lên trong một loại bài đăng khác (không có yêu cầu về kích thước) không đáp ứng các yêu cầu này.
cfx

Có cách nào để áp dụng điều này chỉ khi chúng tôi tải lên hình ảnh nổi bật?
deathlock
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.