Batasi unggahan gambar menjadi satu dan nonaktifkan audio, video, dan tipe file dokumen lainnya untuk diunggah

20

Seseorang tahu beberapa trik di Tambahkan Posting baru ke:

  1. Nonaktifkan unggahan audio, video, dan tipe file lainnya.

  2. Hanya terima unggahan gambar (jpg, png, gif).

  3. Batasi unggahan setiap Posting hanya untuk Satu gambar (tidak lebih dari satu).

Terima kasih sebelumnya.

José Pablo Orozco Marín
sumber
1
Anda juga dapat memodifikasi pengunggah Flash untuk mengizinkan hanya satu file . Ini bekerja bersama dengan solusi yang diberikan Mike.
Jan Fabry

Jawaban:

25

Saya hampir menyerah berpikir bahwa itu tidak mungkin atau setidaknya mudah dan kemudian saya menemukan wp_handle_upload_prefilterfilter yang memberi Anda apa yang Anda minta! Ini kodenya:

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

Dan berikut adalah beberapa tangkapan layar yang menunjukkan tampilannya saat beraksi:

Cuplikan layar Dialog Unggah WordPress dengan kode untuk menonaktifkan banyak unggahan apa pun selain file gambar

Cuplikan layar Dialog Unggah WordPress dengan kode untuk menonaktifkan beberapa unggahan gambar per posting

MikeSchinkel
sumber
Terima kasih Mike. Tampaknya berfungsi pada proses unggah non flash, tetapi menggunakan versi flash menunjukkan: ... Maaf, Anda hanya dapat mengunggah file gambar .GIF, .JPG, atau .PNG.
José Pablo Orozco Marín
@ José Pablo Orozco Marín - Terima kasih telah menemukan kesalahan saya. Saya pikir saya telah menemukan masalah dan memposting versi yang lebih baru dari kode yang saya yakini berfungsi untuk pengunggah flash sekarang. Biarkan aku tahu!
MikeSchinkel
@ José Pablo Orozco Marín - Luar Biasa. Senang bisa membantu.
MikeSchinkel
di mana saya harus menambahkan baris ini - dan apakah itu kompatibel tu wp 3.01 dan yang terakhir?
1
hai mike. Jawaban ini sudah cukup lama. Apakah ada pendekatan yang lebih baik untuk mempertimbangkan versi baru wordpress?
Sisir