Limiter le téléchargement d'images à un seul et désactiver les types de fichiers audio, vidéo et autres documents à télécharger

20

Quelqu'un connaît un truc dans Ajouter un nouveau message à:

  1. Désactivez le téléchargement de fichiers audio, vidéo et autres types de fichiers.

  2. N'acceptez que le téléchargement d'une image (jpg, png, gif).

  3. Limitez le téléchargement de chaque publication à une seule image (pas plus d'une).

Merci d'avance.

    
posée José Pablo Orozco Marín 30.01.2011 - 06:00

1 réponse

25

Bonjour José Pablo Orozco Marín:

J'allais arrêter de penser que ce n'était pas possible ou du moins facile, puis je suis tombé sur le filtre wp_handle_upload_prefilter qui vous donne exactement ce que vous avez demandé! Voici le code:

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

Et voici quelques captures d'écran montrant à quoi ça ressemble en action:

    
réponse donnée MikeSchinkel 30.01.2011 - 06:50

Lire d'autres questions sur les étiquettes