Limita il caricamento delle immagini a uno e disabilita il caricamento di audio, video e altri tipi di file di documenti


20

Qualcuno conosce qualche trucco in Aggiungi nuovo post a:

  1. Disabilita il caricamento di audio, video e altri tipi di file.

  2. Accetta solo il caricamento di un'immagine (jpg, png, gif).

  3. Limitare il caricamento di ciascun post a una sola immagine (non più di una).

Grazie in anticipo.


1
Puoi anche modificare l'uploader Flash per consentire solo un file . Questo funziona insieme alla soluzione che Mike ha dato.
Jan Fabry,

Risposte:


25

Stavo per rinunciare pensando che non fosse possibile o almeno facile e poi mi sono imbattuto nel wp_handle_upload_prefilterfiltro che ti dà esattamente quello che hai chiesto! Ecco il codice:

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

Ed ecco alcuni screenshot che mostrano come appare in azione:

Schermata della finestra di caricamento di WordPress con codice per disabilitare più caricamenti di qualsiasi cosa oltre ai file di immagine

Schermata della finestra di caricamento di WordPress con codice per disabilitare più caricamenti di immagini per post


Grazie Mike. Sembra funzionare su un processo di caricamento non flash, ma l'utilizzo della versione flash mostra: ... Spiacenti, puoi caricare solo un file immagine .GIF, .JPG o .PNG.
José Pablo Orozco Marín,

@ José Pablo Orozco Marín - Grazie per aver trovato il mio errore. Penso di aver riscontrato il problema e di aver pubblicato una versione più recente del codice che credo funzioni ora per l'uploader flash. Fammi sapere!
MikeSchinkel,

@ José Pablo Orozco Marín - Fantastico. Sono contento di poterti aiutare.
MikeSchinkel,

dove devo aggiungere questa linea - ed è compatibile tu wp 3.01 e quest'ultima?

1
ciao Mike. Questa risposta è piuttosto vecchia. Esiste un approccio migliore considerando la nuova versione di wordpress?
Sisir,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.