Ограничить загрузку изображений одним и отключить аудио, видео и другие типы файлов документов для загрузки

20

Кто-то знает хитрость в добавлении нового сообщения в:

  1. Отключите загрузку аудио, видео и других типов файлов.

  2. Примите только загрузку изображения (jpg, png, gif).

  3. Ограничьте загрузку каждого сообщения только одним изображением (не более одного).

Заранее спасибо.

Хосе Пабло Ороско Марин
источник
1
Вы также можете изменить загрузчик Flash, чтобы разрешить только один файл . Это работает вместе с решением, которое дал Майк.
Ян Фабри

Ответы:

25

Я собирался отказаться от мысли, что это невозможно или, по крайней мере, легко, и затем я наткнулся на wp_handle_upload_prefilterфильтр, который дает вам именно то, что вы просили! Вот код:

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

И вот несколько скриншотов, показывающих, как это выглядит в действии:

Снимок экрана WordPress Upload Dialog с кодом для отключения нескольких загрузок чего-либо, кроме файлов изображений

Снимок экрана: диалог загрузки WordPress с кодом для отключения нескольких загрузок изображений в записи

MikeSchinkel
источник
Спасибо майк Кажется, работает над процессом загрузки без флэш-памяти, но использование флэш-версии показывает: ... Извините, вы можете загружать только файлы изображений .GIF, .JPG или .PNG.
Хосе Пабло Ороско Марин
@ Хосе Пабло Ороско Марин - Спасибо, что нашли мою ошибку. Я думаю, что нашел проблему и выложил более новую версию кода, которая, как мне кажется, работает сейчас для флэш-загрузчика. Дай мне знать!
MikeSchinkel
@ Хосе Пабло Ороско Марин - Отлично. Рад, что смог помочь.
MikeSchinkel
куда мне добавить эту строку - и совместима ли она с wp 3.01 и последними?
1
эй майк Этот ответ довольно старый. Есть ли лучший подход, учитывая новую версию WordPress?
Сисир