Tout savoir sur WordPress
Tutoriel WordPress

Interdire l’upload de vidéo et de son à vos utilisateurs

Cette astuce permet d’interdire l’envoi de vidéo et de son à partir du système d’envoi de fichier de WordPress.

La gestion des médias sur WordPress permet d’envoyer un grand nombre de format de fichiers. Par exemple, on peut télécharger des fichiers .jpg, .png; .giff, .tiff, .doc, .pdf ou encore . mp3.

Si l’on souhaite restreindre l’envoi de certains formats, nous pouvons utiliser le filtre upload_mimes de WordPress pour filtrer les formats. C’est grâce à ce filtre que nous allons pouvoir interdire l’envoi de fichier vidéo et son.

Copier le code ci-dessous dans le fichier functions.php présent à la racine de votre thème :

add_filter( 'upload_mimes','gkp_restrict_mime', 999 );
function gkp_restrict_mime($mimes) {

    if( !current_user_can( 'administrator' ) ) {
        $forbidden_mimes = array( 'asf|asx|wax|wmv|wmx', 'avi', 'divx', 'flv', 'mov|qt', 'mpeg|mpg|mpe' );
		
	foreach( $forbidden_mimes as $fm ) {
	    if( isset( $mimes[$fm] ) )
                unset( $mimes[$fm] );
	    }
	}
	
    return $mimes;
}
Cet article a été mis à jour il y a 2336 jours - Il n'est peut être plus à jour !

Article écrit par Jonathan B.

Jonathan est le co-fondateur de WP Media, startup connue pour être l’auteur de WP Rocket et Imagify. Il est aussi co-organisateur du WordCamp Lyon et Paris.

8 Commentaires

  1. merci pour ce tuto mais si on veux tout interdire à ses utilisateurs que seuls les admins puissent uploader comment faire svp??

  2. Voici la solution :

    function restrict_mime($mimes) {
     	
    	if( !current_user_can('administrator') ) {
    
    	$mimes = array(
           'jpg|jpeg|jpe' => 'image/jpeg',
           'png' => 'image/png',
           'gif' => 'image/gif',
           'application/pdf',
           'doc|docx' => 'application/msword',
    	);
    
    	}
    
    	return $mimes;
    }
    add_filter('upload_mimes','restrict_mime');
  3. L’astuce devrait s’appeler : « N’autoriser que image/pdf/doc » car ton code n’interdit rien, il écrase tous les mimes pour n’en laisser que 5 !
    Voici la liste des mimes qui sont présents de base :

    $mimes = apply_filters( 'upload_mimes', array(
    		'jpg|jpeg|jpe' => 'image/jpeg',
    		'gif' => 'image/gif',
    		'png' => 'image/png',
    		'bmp' => 'image/bmp',
    		'tif|tiff' => 'image/tiff',
    		'ico' => 'image/x-icon',
    		'asf|asx|wax|wmv|wmx' => 'video/asf',
    		'avi' => 'video/avi',
    		'divx' => 'video/divx',
    		'flv' => 'video/x-flv',
    		'mov|qt' => 'video/quicktime',
    		'mpeg|mpg|mpe' => 'video/mpeg',
    		'txt|asc|c|cc|h' => 'text/plain',
    		'csv' => 'text/csv',
    		'tsv' => 'text/tab-separated-values',
    		'ics' => 'text/calendar',
    		'rtx' => 'text/richtext',
    		'css' => 'text/css',
    		'htm|html' => 'text/html',
    		'mp3|m4a|m4b' => 'audio/mpeg',
    		'mp4|m4v' => 'video/mp4',
    		'ra|ram' => 'audio/x-realaudio',
    		'wav' => 'audio/wav',
    		'ogg|oga' => 'audio/ogg',
    		'ogv' => 'video/ogg',
    		'mid|midi' => 'audio/midi',
    		'wma' => 'audio/wma',
    		'mka' => 'audio/x-matroska',
    		'mkv' => 'video/x-matroska',
    		'rtf' => 'application/rtf',
    		'js' => 'application/javascript',
    		'pdf' => 'application/pdf',
    		'doc|docx' => 'application/msword',
    		'pot|pps|ppt|pptx|ppam|pptm|sldm|ppsm|potm' => 'application/vnd.ms-powerpoint',
    		'wri' => 'application/vnd.ms-write',
    		'xla|xls|xlsx|xlt|xlw|xlam|xlsb|xlsm|xltm' => 'application/vnd.ms-excel',
    		'mdb' => 'application/vnd.ms-access',
    		'mpp' => 'application/vnd.ms-project',
    		'docm|dotm' => 'application/vnd.ms-word',
    		'pptx|sldx|ppsx|potx' => 'application/vnd.openxmlformats-officedocument.presentationml',
    		'xlsx|xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml',
    		'docx|dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml',
    		'onetoc|onetoc2|onetmp|onepkg' => 'application/onenote',
    		'swf' => 'application/x-shockwave-flash',
    		'class' => 'application/java',
    		'tar' => 'application/x-tar',
    		'zip' => 'application/zip',
    		'gz|gzip' => 'application/x-gzip',
    		'rar' => 'application/rar',
    		'7z' => 'application/x-7z-compressed',
    		'exe' => 'application/x-msdownload',
    		// openoffice formats
    		'odt' => 'application/vnd.oasis.opendocument.text',
    		'odp' => 'application/vnd.oasis.opendocument.presentation',
    		'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
    		'odg' => 'application/vnd.oasis.opendocument.graphics',
    		'odc' => 'application/vnd.oasis.opendocument.chart',
    		'odb' => 'application/vnd.oasis.opendocument.database',
    		'odf' => 'application/vnd.oasis.opendocument.formula',
    		// wordperfect formats
    		'wp|wpd' => 'application/wordperfect',
    		) );
    

    Tu en supprimes donc 53 ! Il est maintenant impossible d’uploader un .css, .html, .pptt, .xls, .zip, bref tu as compris.

    Attention, la solution n’est PAS de reprendre cette liste et de ne supprimer que ceux qu’on ne veux pas.
    Encore une fois, il ne faut pas penser que seul notre code modifie WordPress.
    Et si un plugin ajoutait l’extension .lol car j’ai besoin de ces fichiers (ils sont rigolos !), ce code écraserait l’utilité de mon plugin.
    Voici ce qu’il faut plutôt faire :

    function restrict_mime($mimes) {
    	if( !current_user_can('administrator') ) {
    		$forbidden_mimes = array( 'asf|asx|wax|wmv|wmx', 'avi', 'divx', 'flv', 'mov|qt', 'mpeg|mpg|mpe' );
    		foreach( $forbidden_mimes as $fm ) {
    			if( isset( $mimes[$fm] )
    				unset( $mimes[$fm] );
    		}
    	}
    	return $mimes;
    }
    add_filter( 'upload_mimes','restrict_mime', 999 );
    

    Aussi, j’y mets une priorité 999 pour que ce code d’interdiction/suppression se fasse en dernier, on interdit toujours en dernier.

    Voilà ;)

  4. @Julio : Merci pour les informations. En effet, ce n’est pas la même chose :/

    L’astuce vient d’être mise à jour.

7633d923b1dd17618135e47f51fff847BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB