Giới hạn tải lên hình ảnh thành một và vô hiệu hóa âm thanh, video và các loại tệp tài liệu khác để tải lên


20

Ai đó biết một số mẹo trong Thêm bài mới vào:

  1. Vô hiệu hóa việc tải lên âm thanh, video và các loại tệp khác.

  2. Chỉ chấp nhận tải lên hình ảnh (jpg, png, gif).

  3. Giới hạn tải lên của mỗi bài đăng chỉ một hình ảnh (không quá một).

Cảm ơn trước.


1
Bạn cũng có thể sửa đổi trình tải lên Flash để chỉ cho phép một tệp . Điều này hoạt động cùng với giải pháp Mike đưa ra.
Jan Fabry

Câu trả lời:


25

Tôi đã từ bỏ suy nghĩ rằng điều đó là không thể hoặc ít nhất là dễ dàng và sau đó tôi tình cờ tìm thấy wp_handle_upload_prefilterbộ lọc cung cấp cho bạn chính xác những gì bạn yêu cầu! Đây là mã:

add_filter('wp_handle_upload_prefilter', 'yoursite_wp_handle_upload_prefilter');
function yoursite_wp_handle_upload_prefilter($file) {
  // This bit is for the flash uploader
  if ($file['type']=='application/octet-stream' && isset($file['tmp_name'])) {
    $file_size = getimagesize($file['tmp_name']);
    if (isset($file_size['error']) && $file_size['error']!=0) {
      $file['error'] = "Unexpected Error: {$file_size['error']}";
      return $file;
    } else {
      $file['type'] = $file_size['mime'];
    }
  }
  list($category,$type) = explode('/',$file['type']);
  if ('image'!=$category || !in_array($type,array('jpg','jpeg','gif','png'))) {
    $file['error'] = "Sorry, you can only upload a .GIF, a .JPG, or a .PNG image file.";
  } else if ($post_id = (isset($_REQUEST['post_id']) ? $_REQUEST['post_id'] : false)) {
    if (count(get_posts("post_type=attachment&post_parent={$post_id}"))>0)
      $file['error'] = "Sorry, you cannot upload more than one (1) image.";
  }
  return $file;
}

Và đây là một số ảnh chụp màn hình cho thấy nó trông như thế nào trong hành động:

Ảnh chụp màn hình của hộp thoại tải lên WordPress với mã để vô hiệu hóa nhiều lần tải lên bất cứ thứ gì ngoài các tệp hình ảnh

Ảnh chụp màn hình của hộp thoại tải lên WordPress với mã để vô hiệu hóa nhiều hình ảnh tải lên trên mỗi bài đăng


Cảm ơn Mike. Có vẻ hoạt động trong quá trình tải lên không flash, nhưng sử dụng phiên bản flash cho thấy: ... Xin lỗi, bạn chỉ có thể tải lên một tệp hình ảnh .GIF, .JPG hoặc .PNG.
Jose Pablo Orozco Marín

@ José Pablo Orozco Marín - Cảm ơn bạn đã tìm ra lỗi của tôi. Tôi nghĩ rằng tôi đã tìm thấy vấn đề và đăng một phiên bản mã mới hơn mà tôi tin rằng nó hoạt động cho trình tải lên flash ngay bây giờ. Cho tôi biết!
MikeSchinkel

@ Jose Pablo Orozco Marín - Tuyệt vời. Rất vui vì tôi có thể giúp.
MikeSchinkel

Tôi nên thêm dòng này vào đâu - và nó có tương thích tu wp 3.01 và sau này không?

1
Chào Mike. Câu trả lời này khá cũ. Có một cách tiếp cận tốt hơn khi xem xét phiên bản mới của wordpress?
Sisir
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.