Les caractéristiques des fichiers qu’on peut charger dans un site WordPress sont définies par WordPress. On peut souhaiter autoriser le chargement d’autres types de fichier, par exemple des fichiers .dxf pour mettre des plans à disposition des internautes. J’explique ici comment créer une extension autorisant l’ajout de fichiers différents. 

Quels sont les fichiers autorisés par WordPress ?

Le codex WordPress, en anglais, liste toutes les extensions autorisées. En gros, les fichiers autorisés sont des types suivants :

  • images ;
  • documents bureautiques issus de Microsoft Office ou Libre Office, ou pdf ;
  • vidéos ;
  • audios.

La notion de Mime Types

Les Types Mime identifient les formats de données  (voir l’article Wikipedia en français). Ils permettent aux ordinateurs de savoir quel logiciel utiliser pour ouvrir un fichier selon son extension.  Ainsi, un fichier de type application/pdf  sera ouvert par un lecteur de PDF. WordPress utilise ces formats pour définir des autorisations. Un format qui n’est pas explicitement autorisé ne peut pas être chargé dans un site WordPress.

Cette page recense la plupart des Mime Types existants (site Sitepoint.com).

Créer une extension pour ajouter de nouveaux mime types

Nous voulons ajouter les extensions suivantes :

  • .ino (fichiers exécutables par des arduino)
  • .dxf (dessins, utilisables par des imprimantes 2D)
  • .stl (plans pour imprimantes 3D)

Nous allons donc devoir ajouter les mime-types suivants :

  • application/octet-stream  pour les .ino. Ce type est un « flux de données arbitraire » selon Wikipedia.
  • application/sla  pour les .stl
  • application/dxf   pour les .dxf

L’article « How to Add Additional File Types to be Uploaded in WordPress« , explique bien comment ajouter des nouveaux types de fichiers. Nous allons utiliser ce code dans une extension.

Actuellement, si je veux uploader un fichier .ino, j’ai un message d’erreur : « test.ino Désolé, ce type de fichier n’est pas autorisé pour des raisons de sécurité. « 

créer la base de l’extension

Nous faisons comme indiqué dans l’article « Créer un plugin WordPress de fonctionnalités – étape 1« .

Le fichier principal contient le code suivant :

function ald_fabrik_add_upload_mime_types( $mimes ) {
	
	$mimes['ino'] = 'application/octet-stream'; 	// arduino files
	$mimes['stl'] = 'application/sla'; 		// 3D drawings
	$mimes['dxf'] = 'application/dxf'; 		// 2D or 3D drawings

    return $mimes;
}

add_filter( 'upload_mimes', 'ald_fabrik_add_upload_mime_types', 1, 1 );

Si j’active cette extension, je peux maintenant charger un fichier .ino (arduino test), un fichier .dxf (DXF exemple) et un fichier .stl (fichier stl exemple) !

L’extension est disponible en téléchargement ici sur github.

Attention

Il ne faut pas autoriser le chargement de fichiers exécutables dans un site WordPress car il y a des risques importants de sécurité. Il ne faut pas autoriser le chargement de fichiers php, js, html, pl, etc. Pour mettre à disposition ces fichiers, on les placera sur GitHub par exemple ou on en indique le contenu grâce à une extension comme Crayon Syntax Highlighter, que j’utilise dans ce site.

0 0 votes
Évaluation de l'article
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x