Utilizzando WordPress può capitare di voler caricare un file per condividerlo con i propri lettori. Attraverso gli strumenti a nostra disposizione, bastano un paio di click per ottenere il risultato sperato… beh, quasi sempre.
A volte, infatti, potremmo ricevere un fastidioso messaggio di errore (“Questo tipo di file non è consentito per questioni di sicurezza.”) che ci impedisce di completare l’operazione in modo corretto. Ciò accade perché in WordPress esiste una whitelist di estensioni di file che è possibile caricare, mentre gli altri sono bloccati per evitare la diffusione di file potenzialmente pericolosi.
Aggirare questo controllo è relativamente semplice, poiché è sufficiente inserire il file in un archivio zip, una tra le estensioni consentite. Ovviamente la soluzione non è delle più pulite, ma estremamente veloce e semplice da attuare, anche dagli autori.
Per fare le cose in maniera più seria è necessario godere di privilegi un più elevati, visto che è necessario poter modificare il file functions.php del tema in uso. In particolare sarà necessario aggiungere, con le giuste modifiche, le seguenti righe:
function my_myme_types($mime_types){
$mime_types['avi'] = 'video/avi';
$mime_types['apk'] = 'application/vnd.android.package-archive';
return $mime_types;
}
add_filter('upload_mimes', 'my_myme_types', 1, 1);
Con le righe di questo esempio si stanno aggiungendo i file apk ed avi alla lista dei file che è possibile caricare. Basterà quindi modificare estensione e tipo mime modificandoli al valore che ci interessa.
Allo stesso modo è possibile impedire che un file previsto nella whitelist venga caricato agendo in maniera molto simile:
function my_myme_types($mime_types){
unset($mime_types['pdf']);
return $mime_types;
}
add_filter('upload_mimes', 'my_myme_types', 1, 1);
Infine è possibile resettare completamente l’array dei tipi consentiti e rigenerarne uno proprio, in modo da avere tutto sotto controllo:
function my_myme_types($mime_types){
$mime_types = array(
'jpg|jpeg|jpe' => 'image/jpeg',
'gif' => 'image/gif',
'png' => 'image/png',
'bmp' => 'image/bmp',
'tif|tiff' => 'image/tiff' );
return $mime_types;
}
add_filter('upload_mimes', 'my_myme_types', 1, 1);
GRAZIE, molto utile :)
Buongiorno, scusa il disturbo. Ho solo un dubbio: al posto di $mime_types devo mettere il mime type oppure va lasciata così e quella sarebbe una sorta di variabile? Mi potresti fare un esempio di codice da inserire nel file functions.php (un tipo di file qualsiasi va benissimo grazie)!
Grazie mille!
Mauro
$mime_types è il nome della variabile, quindi può essere cambiato a piacere purché poi utilizzi in tutte le parti della funzione quel nome. Puoi anche cambiare il nome della funzione, se preferisci (sempre con gli stessi accorgimenti).
In ogni caso le parti importanti sono quelle tra virgolette.
Gli esempi che ti posso fare sono gli stessi riportati nell’articolo.
Per aggiungere file con estensione .avi
function my_myme_types($mime_types){
$mime_types['avi'] = 'video/avi'; // tra quadre l'estensione, dopo l'uguale il myme type
return $mime_types;
}
add_filter('upload_mimes', 'my_myme_types', 1, 1);
Perfetto, ti ringrazio!