web-dev-qa-db-fra.com

Désactiver les téléchargements de média vers des utilisateurs non administrateurs

Je travaille sur un site client. L’une des fonctionnalités souhaitées est que ses Éditeurs ou Auteurs ne puissent sélectionner que des images existantes à insérer dans des publications à partir de la médiathèque.

En regardant l’écran de gestionnaire/téléchargement de média ci-dessous, est-il possible de rendre l’onglet Upload Files visible uniquement par Admin Users et également de rendre le Media Library affiché par défaut lorsque cette boîte de dialogue est affichée?

enter image description here

7
JasonDavis

Méthode 1:

Supprimez la capacité upload_files des rôles respectifs.

par exemple. le retirer de l'auteur:

$role = get_role( 'author' );
$role->remove_cap( 'upload_files' );

Ceci est enregistré dans la base de données, donc cela ne devrait se produire qu'une seule fois, pas à chaque chargement de page. Le retirer du rôle d’éditeur devrait être le même, à l’exception de la modification évidente. Supprimer cette capacité aura l’effet souhaité, mais il se peut que vous en trouviez d’autres que vous pourriez ne pas trouver aussi désirables. Le seul moyen de vous en assurer est de tester.

Méthode 2

Considérez ce code, qui rendra l'erreur de téléchargement si l'utilisateur ne dispose pas des privilèges d'administrateur.

<?php
/**
 * Plugin Name: Admin Only Uploads
 * Description: Prevents Uploads from non-Admins
 * Author: TJNowell
 * Author URI: http://tomjn.com
 * Version: 1.0
 */

function tomjn_only_upload_for_admin( $file ) {
    if ( ! current_user_can( 'manage_options' ) ) {
        $file['error'] = 'You can\'t upload images without admin privileges!';
    }
    return $file;
}
add_filter( 'wp_handle_upload_prefilter', 'tomjn_only_upload_for_admin' );

Vous pouvez utiliser ce filtre pour être plus spécifique que upload_file, par exemple. empêchant le téléchargement d'images, et seulement d'images, mais en autorisant l'audio, etc.

14
Tom J Nowell