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


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 з кодом для відключення декількох завантажень нічого, крім файлів зображень

Скріншот діалогового вікна завантаження WordPress з кодом для відключення декількох завантажень зображень на повідомлення


Спасибі Майку. Здається, працює над завантаженням без спалаху, але за допомогою флеш-версії показано: ... Вибачте, ви можете завантажувати лише файл зображення .GIF, .JPG або .PNG.
Хосе Пабло Ороско Марін

@ Жозе Пабло Ороско Марін - Дякую, що знайшли мою помилку. Я думаю, що я знайшов проблему і опублікував нову версію коду, яка, на мою думку, працює зараз для завантажувача флеш. Дай мені знати!
MikeSchinkel

@ Хосе Пабло Ороско Марін - Чудовий. Радий, що можу допомогти.
MikeSchinkel

куди слід додати цей рядок - і чи сумісний він tu wp 3.01 та останній?

1
ей, мікрофон. Ця відповідь досить стара. Чи є кращий підхід щодо розгляду нової версії wordpress?
Сісір
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.