WordPress : Upload et formats de fichiers

Comment étendre la liste des formats/types de fichiers acceptés dans la médiathèque de WordPress ? (fichiers « uploadés »)

Pour des raisons de sécurité, WordPress restreint la liste des formats de fichiers pouvant être insérés dans les articles.

Dès que l’utilisateur tente d’ajouter un fichier d’un format non autorisé , il se trouve face à un message d’erreur du type :

“myfile.tar.bz2” has failed to upload due to an error
Sorry, this file type is not permitted for security reasons.

ou, sur une interface en français :

« myfile.tar.bz2 » n’a pas pu être mis en ligne suite à une erreur
Désolé, ce type de fichier n’est pas autorisé pour des raisons de sécurité.

Les types de fichiers autorisés dans la médiathèque de WordPress sont stockés dans un tableau associatif dont la clé est l’extension du fichier et la valeur son type mime.
Une méthode pour modifier ce tableau consiste à placer le code suivant à la fin du fichier « functions.php » de votre thème (avant la fermeture de la balise php « ?> » s’il y en a une) :

// GESTION DES FORMATS DE FICHIERS DE LA MÉDIATHÈQUE
 
// Appel de Extend_Upload_Mimes sur le tableau des mimes
// supportés :
add_filter('upload_mimes', 'Extend_Upload_Mimes');
 
/* 
 * Fonction Extend_Upload_Mimes :
 * Prend en argument le tableau associatif des types mimes
 * supportés le modifie et le retourne modifié.
 */
function Extend_Upload_Mimes ( $CurrentMimes=array() ) {
//	Ajout de nouveaux types :
	$CurrentMimes['bz2|tbz2|tbz'] = 'application/x-bzip2';
	$CurrentMimes['gz|tgz'] = 'application/x-gzip';
	$CurrentMimes['sh'] = 'text/x-shellscript';
	$CurrentMimes['zip'] = 'application/zip';
 
//	Suppression de types non souhaités :
	unset( $CurrentMimes['exe'] );
 
	return $CurrentMimes;
}

Note : Le fichier « functions.php » peut être édité directement depuis l’interface WordPress sous le menu « Appearance > Editor » et éditer « Theme Functions » pour une interface anglaise ou « Apparence > Editeur » et éditer « Fonctions du thème » sur une interface en français.

Ce code ajoute la possibilité d’uploader sur WordPress des archives tar.gz ou tar.bz avec les extensions « .tar.bz2 », « .tbz », etc, des scripts Shell (extension « .sh ») et des archives zip.
Les fichiers « .exe » en revanche ne sont plus acceptés. Ce code peut être étendu en fonction des besoins.

Comment déterminer le type mime d’un fichier ?

Sous Linux ou Mac OS X vous trouverez le type mime d’un fichier via l’option « –mime-type » de la commande « file » :

fhh@mafalda ~ $ file --mime-type archive.tar.gz 
archive.tar.gz: application/x-gzip
fhh@mafalda ~ $ file --mime-type fig.svg 
fig.svg: image/svg+xml
fhh@mafalda ~ $ file --mime-type slides.tex 
slides.tex: text/x-tex

Références

WordPress : http://wordpress.org/
Accepted filetypes (WordPress) : http://en.support.wordpress.com/accepted-filetypes/
Type MIME : http://fr.wikipedia.org/wiki/Type_MIME

5 réflexions au sujet de « WordPress : Upload et formats de fichiers »

  1. vous avez raison quant au mime, j’ai modifié et ça marche.

    Par contre, le plugin ayant évolué, les modifs ne se font plus dans functions.php mais dans 2 fichiers:

    downloadable_file.class.php (pour enrichir le switch // Filetype Icons)

    case « kml »:
    $icon .= ‘document-google’;
    break;

    ainsi que :
    case « kml »:
    $icon .= ‘document-image’;

    il faudra bien sûr créer l’icone que vous appelerez comme vous voulez : document-google.png (ou autre bien sûr) et que vous sauverez dans img/filetype_icons

    Il faudra ensuite modifier le fichier download.php en ajoutant la ligne suivant au switch :

    case « kml »:$ctype= »application/vnd.google-earth.kml+xml »; break;

    voilà, merci pour votre tuto car je n’aurais pas su où fouiller autrement.

  2. Bonjour,

    J’aimerais pouvoir mettre des fichiers Google Earth en téléchargements.
    Or les extensions .kml ne sont pas autorisées.
    Je vais inclure votre code dans le fichier functions.php mais auparavant j’aimerais vous soumettre la modif:

    $CurrentMimes[‘kml’] = ‘application/kml’;

    Pensez-vous que ça fonctionnera ou bien vais-je planter le script?

    merci d’avance

    1. A priori, il n’y a pas de risque de planter quoi que se soit. Dans le pire des cas, vous ne pourrez pas uploader vos fichiers.
      Les mimes types des fichiers KML semblent plutôt être du genre : « application/vnd.google-earth.kml+xml » …

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *