Từ chối tải lên hình ảnh có kích thước sai bằng Trình tải lên phương tiện


12

Tôi đang làm việc trên một cài đặt cực kỳ nghiêm ngặt để thêm hình ảnh vào Trường tùy chỉnh trong màn hình Chỉnh sửa bài. Kịch bản tối ưu của tôi sẽ là thêm một thông báo Lỗi tùy chỉnh khi người dùng cố tải lên hình ảnh có kích thước sai cho giá trị tùy chỉnh cụ thể đó.

Tôi biết tôi có thể làm điều này với bất kỳ trình tải lên tùy chỉnh nào, nhưng tôi thực sự thích làm điều đó với Trình tải lên phương tiện thông thường. Tôi cũng biết về wp_handle_upload_prefilter mà tôi đã sử dụng để xác thực tên tệp và tạo thông báo lỗi tùy chỉnh dựa trên các yêu cầu chung. Điều tôi cần ngay bây giờ là cách sử dụng các yêu cầu tùy chỉnh để từ chối tải lên dựa trên lĩnh vực chúng tôi đang tải lên.

Tôi cũng biết phân biệt hình ảnh nổi bật từ hình ảnh đăng khi tải lên nhưng tôi muốn một giải pháp lưu trước.

Điều này sẽ trông giống như thế này:

nhập mô tả hình ảnh ở đây

Có ý tưởng nào về cách thông báo wp_handle_upload_prefilter(hoặc tương tự) về lĩnh vực chúng ta đang giải quyết không?


Câu hỏi thú vị. Nói chung, tôi đang nghĩ rằng, chuyển một biến tùy chỉnh thông qua tập lệnh phương thức tải lên phương tiện tùy chỉnh mà sau đó bạn có thể vượt qua để phân biệt rõ hơn trên đường đi. Đây có thể là cách duy nhất, mặc dù tôi không chắc chắn 100% về điều đó. Bạn sẽ tìm thấy thông tin bạn cần về điều đó, nếu bạn tiếp tục và tìm kiếm nó. Sau đó quay lại và hoàn thành câu hỏi của bạn với thông tin cụ thể đó hoặc, nếu bạn tự giải quyết nó, hãy đăng giải pháp của bạn dưới dạng câu trả lời. Chúc may mắn!
Nicolai

Nếu tôi nói tùy chỉnh, tôi có nghĩa là sử dụng tùy chỉnh Trình tải lên phương tiện WordPress, ví dụ như được thảo luận ở đây .
Nicolai

Vâng, tôi đã làm một cái gì đó như thế này trước đây, vào thời của Trình tải lên Flash. Lần này tôi sẽ đi một cách sạch sẽ hơn, nhưng điều đó có thể là không thể. Sẽ nhìn vào đó, cảm ơn!
moraleida

Tôi nghe thấy bạn, nhưng tôi thực sự không nghĩ rằng đó là một cách tồi tệ để làm điều đó. Ngoài ra, như tôi đã nói, tôi chỉ không nhìn thấy / biết một cách khác để làm điều đó, nhưng có thể có ai đó cùng với nhiều kiến ​​thức hơn để làm rõ điều đó.
Nicolai

1
Bạn đang đi trước với điều này? Nếu không, nhưng bạn có một số mã bạn đang làm việc, đăng nó. Tôi sẵn sàng thiết lập một tiền thưởng cho câu hỏi nếu có thêm nền tảng cho nó.
Nicolai

Câu trả lời:


4

Trong trình xử lý của bạn, nếu bạn đặt 'lỗi', thông báo lỗi sẽ được hiển thị và sẽ hủy tải lên

add_filter( 'wp_handle_upload_prefilter', 'custom_upload_filter' );

function custom_upload_filter( $file ) {
    $image_info   = getimagesize( $file['tmp_name'] );
    $image_width  = $image_info[0];
    $image_height = $image_info[1];

    if ( $image_with !== 800 || $image_height !== 600 ) {
        $file['error'] = __( 'Images must be sized exactly 800 * 600', 'your_textdomain' );
    }
    return $file;
}

Nếu người dùng của bạn cố tải lên một kích thước khác, thông báo sẽ là:

thefile.png has failed to upload due to an error  
Size must be exactly 800 * 600

Lưu ý rằng wp_handle_upload_prefilterxuất hiện rất sớm trong quá trình xử lý tải lên, vì vậy bạn có thể muốn kiểm tra xem tệp đã được tải lên đúng cách chưa (từ quan điểm HTTP) và là hình ảnh trước khi kiểm tra kích thước.

Tham chiếu: funtion wp_handle_upload()trong tập tin cốt lõiwp-admin/includes/file.php


Vâng, đây là những gì tôi đã làm để xác nhận tên tệp và thuộc tính svg. Điều tôi cần ngay bây giờ là một cách để chuyển một tham số khác vào bộ lọc đó (hoặc một cái khác), cho biết trường nào đang được điền bởi tải lên đó để tôi có thể áp dụng các hạn chế khác nhau cho các trường khác nhau. Điều này thực sự đang bị trì hoãn ngay bây giờ. Tôi sẽ cập nhật câu hỏi sau với những phát hiện của tôi.
moraleida
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.