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 :
[pastacode lang=”php” message=”” highlight=”” provider=”manual”]
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;
}
[/pastacode]
8 Commentaires
merci pour ce tuto mais si on veux tout interdire à ses utilisateurs que seuls les admins puissent uploader comment faire svp??
pas de solution :(
Voici la solution :
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 :
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 :
Aussi, j’y mets une priorité 999 pour que ce code d’interdiction/suppression se fasse en dernier, on interdit toujours en dernier.
Voilà ;)
Correction :
if( isset( $mimes[$fm] )
devient
if( isset( $mimes[$fm] ) )
@Julio : Merci pour les informations. En effet, ce n’est pas la même chose :/
L’astuce vient d’être mise à jour.
On ne peut pas le faire différemment?
@yeteland: Si on a fait cette astuce, c’est que non ;)