Funciones para limitar el acceso a archivos multimedia

Desactivar la subida de archivos para determinados perfiles o usuarios en WordPress

Podemos evitar que determinados usuarios o perfiles (roles) suban archivos multimedia (imágenes y documentos) a través del editor de WordPress desactivando la opción “upload_files” de la lista de permisos del rol o usuario que nos interese.

Si tenemos acceso a los archivos del tema o plantilla, podemos incluir las instrucciones en functions.php u otro archivo que tengamos dedicado a funciones relacionadas con permisos y usuarios (o bien crear un plugin de funciones). Si preferimos no tocar el código, o simplemente no tenemos esa opción, podemos utilizar un plugin. Vamos a ver los dos casos a continuación.

Funciones para eliminar permisos de subida de archivos

En este ejemplo, desactivamos la posibilidad de subir archivos multimedia para todos los usuarios de tipo AUTOR. Al activarlo, desaparecerán automáticamente tanto el acceso a la página “Medios” como los botones para subir y gestionar archivos que aparecen por defecto encima de los botones de formato (“Añadir objeto”):

// -----------------------------------------------
// Desactivamos la subida de archivos multimedia
// para usuarios del tipo AUTOR.
// -----------------------------------------------
$roleObject = get_role( 'author' );
if ( $roleObject->has_cap( 'upload_files' ) ) {
    $roleObject->remove_cap( 'upload_files' );
}

Para ello utilizamos la función remove_cap, que nos permite desactivar permisos de roles o usuarios específico.

Hay que tener en cuenta que este tipo de configuraciones son persistentes, quedan guardadas en la base de datos, por lo que es conveniente activarlas sólo una vez, en lugar de cada vez que se carga una página. Para deshacer el cambio de permisos tendremos que crear la función contraria (con add_cap), no basta con eliminar la función del código.

En este otro ejemplo, ocultamos el botón “Añadir objeto” para todos los usuarios menos para los administradores. Aquí conservamos el acceso a la página “Medios”, desde donde se pueden subir archivos al servidor (con el botón “Añadir nuevo” o simplemente arrastrando los archivos dentro de la pantalla):

// -----------------------------------------------
// Desactivamos el botón para subir archivos
// para usuarios no administradores.
// -----------------------------------------------
function media_buttons_remove(){
    if ( !current_user_can( 'manage_options' ) ) {
        remove_action( 'media_buttons', 'media_buttons' );
    }
}
add_action('admin_head', 'media_buttons_remove');

En este caso, los usuarios que no puedan acceder a los ajustes de WordPress (por defecto, ninguno excepto los administradores), tampoco podrán subir archivos. Para permitir a los editores el acceso, podemos cambiar “manage_options” por “edit_pages”, o cualquier otro permiso propio de este perfil.

Si lo que queremos es el caso contrario, sólo desactivar la pestaña “Multimedia” (página “Medios”), para evitar que accedan a los archivos subidos desde WordPress, pero conservando los botones del editor, podemos utilizar esta función:

// -----------------------------------------------
// Ocultamos el acceso a la página Medios
// para usuarios no administradores.
// -----------------------------------------------
function hide_media_library_submenu() {
	global $submenu;
	if ( !current_user_can('manage_options') ) {
		remove_menu_page('upload.php');
	}
}
add_action( 'admin_menu', 'hide_media_library_submenu' );

En este caso, aunque ocultamos el acceso desde el menú principal, la página sigue siendo accesible si se conoce la URL de la libreria multimedia, que normalmente es: http://www.dominio.com/wp-admin/upload.php

Desactivar la subida de archivos con un plugin

Members, de Justin Tadlock, es un plugin muy bien valorado que, entre otras cosas, funciona como un gestor de permisos para usuarios, permitiendo editar, crear o eliminar fácilmente tanto permisos como tipos de usuarios (roles).

En este caso, después de instalar el plugin, para denegar el acceso a la subida de archivos a todos los usuarios de tipo AUTOR habría que ir a:

WordPress > Usuarios > Perfiles > Autor > Editar > Multimedia > upload_files: DENEGAR

Este plugin nos permite además crear nuevos perfiles, por si queremos ser más específicos a la hora de otorgar o denegar permisos.

Comentarios

  1. Alfonso

    Me ha venido de maravilla este tutorial. Claro y conciso, y justo era lo que necesitaba. Gracias!

  2. Suco

    Genial tutorial… me ha sido de gran ayuda, muchas gracias por todo.

Y tú qué opinas?

Las URLs se convertirán en enlaces automáticamente. Tu dirección de email no se publicará ni se utilizará para enviar ningún tipo de información. Los mensajes que no aporten nada al tema que se trata en esta entrada se borrarán. Las imágenes que aparecen al lado de cada autor utilizan el servicio de Gravatar. Recuerda que puedes usar etiquetas HTML como <a href>, <code>, <em> o <strong> en los comentarios.

(necesario)

(opcional)