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

20

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

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

  2. Acceptez uniquement 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.

José Pablo Orozco Marín
la source
1
Vous pouvez également modifier le programme de téléchargement Flash pour autoriser un seul fichier . Cela fonctionne avec la solution proposée par Mike.
Jan Fabry

Réponses:

25

J'étais sur le point de renoncer à penser que ce n'était pas possible ou du moins facile, puis je suis tombé sur le wp_handle_upload_prefilterfiltre 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 cela ressemble en action:

Capture d'écran de la boîte de dialogue de téléchargement de WordPress avec du code pour désactiver plusieurs téléchargements de tout ce qui n'est pas un fichier image

Capture d'écran de la boîte de dialogue de téléchargement WordPress avec code pour désactiver plusieurs téléchargements d'images par publication

MikeSchinkel
la source
Merci Mike. Semble fonctionner sur un processus de téléchargement non flash, mais l'utilisation de la version flash montre: ... Désolé, vous ne pouvez télécharger qu'un fichier image .GIF, .JPG ou .PNG.
José Pablo Orozco Marín
@ José Pablo Orozco Marín - Merci d'avoir trouvé mon erreur. Je pense avoir trouvé le problème et publié une version plus récente du code qui, je pense, fonctionne pour le téléchargeur flash maintenant. Faites le moi savoir!
MikeSchinkel
@ José Pablo Orozco Marín - Génial. Heureux d'avoir pu aider.
MikeSchinkel
où dois-je ajouter cette ligne - et est-elle compatible avec wp 3.01 et cette dernière?
1
salut Mike. Cette réponse est assez ancienne. Existe-t-il une meilleure approche compte tenu de la nouvelle version de wordpress?
Sisir