Tutoriales de WordPress de Confianza, cuando más los necesitas.
Guía para Principiantes de WordPress
Copa WPB
25 Millones+
Sitios web que usan nuestros plugins
16+
Años de experiencia en WordPress
3000+
Tutoriales de WordPress de expertos

Cómo restringir el acceso a la biblioteca de medios a las cargas propias del usuario en WordPress

Administrar un sitio de WordPress con varios autores es emocionante hasta que la biblioteca de medios se convierte en un caos. Hemos pasado por eso y sabemos lo frustrante que es cuando un autor elimina accidentalmente las imágenes de otro, causando caos justo antes de un gran lanzamiento.

Prevenir esto es más fácil de lo que crees. Puedes restringir qué autores ven qué archivos multimedia, devolviendo el orden a tu biblioteca.

Si bien WordPress no tiene una configuración integrada para esto, vamos a compartir el método simple que usamos en nuestros propios proyectos. Te ayudará a mantener tus archivos multimedia organizados y seguros.

Cómo restringir el acceso a la biblioteca de medios a las cargas propias del usuario en WordPress

¿Por qué restringir el acceso de los autores a las cargas de medios?

Si tienes un blog de WordPress con varios autores, entonces tus autores podrían subir muchas imágenes diferentes. Esto puede dificultar que un autor encuentre la imagen correcta, o podrían eliminar o editar accidentalmente el archivo multimedia de otra persona.

Esto puede causar todo tipo de problemas, incluida una baja productividad, mucho trabajo adicional para los administradores y editores del sitio, y un flujo de trabajo editorial complicado.

Este acceso ilimitado también puede ser una preocupación de privacidad. Por ejemplo, si estás trabajando en un nuevo producto o en una idea para una publicación de blog, otros autores podrían ver imágenes confidenciales en la biblioteca de medios antes de que hagas un anuncio público.

Si tienes un sitio de membresía de WordPress, los colaboradores incluso podrían acceder a archivos multimedia premium a través de la biblioteca de medios.

Dicho esto, veamos cómo restringir quién puede ver las cargas de medios dentro de tu área de administración de WordPress.

Cómo organizar las cargas de medios por usuarios con WPCode

Si bien algunos complementos han ofrecido esta función en el pasado, la forma más confiable y ligera de organizar las cargas de usuarios es agregando un simple fragmento de código. ¡No te preocupes, es más fácil de lo que parece!

Vamos a usar el complemento gratuito WPCode para hacer esto. Es la forma más segura y fácil de agregar código personalizado a tu sitio de WordPress sin editar los archivos de tu tema.

Te mostraremos dos fragmentos de código que puedes usar. El primer fragmento restringe el acceso a la biblioteca de medios para todos los usuarios que no sean administradores, y el segundo restringe el acceso para roles de usuario específicos como Autores y Colaboradores.

A menudo, las guías te pedirán que agregues código personalizado a tu tema de WordPress. Sin embargo, esto no se recomienda, ya que errores simples o errores tipográficos en tu código pueden causar errores comunes de WordPress o incluso romper tu sitio por completo.

Es por eso que recomendamos WPCode.

WPCode es el mejor plugin de fragmentos de código utilizado por más de 1 millón de sitios web de WordPress. Hace que sea fácil agregar código personalizado en WordPress sin tener que editar el archivo functions.php.

Consejo de experto: Aquí en WPBeginner, usamos WPCode para administrar todas las funciones personalizadas en nuestra cartera de sitios web. Permite a nuestro equipo de desarrollo agregar y solucionar problemas de código de forma segura sin tocar nunca los archivos del tema principal, lo que ahorra mucho tiempo y previene errores costosos.

Lo primero que debes hacer es instalar y activar el plugin gratuito WPCode. Para más detalles, consulta nuestra guía paso a paso sobre cómo instalar un plugin de WordPress.

Tras la activación, dirígete a Snippets de código » Añadir Snippet.

Cómo agregar fragmentos de PHP personalizados a tu sitio usando WPCode

Aquí, verás todos los fragmentos prefabricados que puedes agregar a tu sitio web. Estos incluyen fragmentos que te permiten deshabilitar completamente los comentarios de WordPress, desactivar las páginas de adjuntos de imágenes, y más.

Simplemente coloca el cursor sobre ‘Agregar tu código personalizado’ y luego selecciona ‘Usar fragmento’.

Agregar un fragmento de código personalizado a WordPress

Para empezar, escribe un título para el fragmento de código personalizado. Puede ser cualquier cosa que te ayude a identificar el fragmento en el panel de WordPress.

Después de eso, abre el menú desplegable ‘Tipo de código’ y selecciona ‘Fragmento de PHP’.

Restringir el acceso a la biblioteca de medios usando WPCode

En el área ‘Vista previa del código’, puedes pegar uno de los siguientes fragmentos de código:

Opción 1: Restringir el acceso a archivos multimedia para usuarios de WordPress que no son administradores

Este código verifica si el usuario actual no es un administrador. Si no es un administrador, filtra la biblioteca de medios para mostrar solo los archivos que el usuario ha subido él mismo.

add_filter( 'ajax_query_attachments_args', 'user_show_attachments' );

function user_show_attachments( $query ) {
    $user_id = get_current_user_id();
    // Check if the current user is not an administrator
    if ( $user_id && !current_user_can('administrator') ) {
        $query['author'] = $user_id;
    }
    return $query;
}

Esto significa que los usuarios normales solo pueden ver y administrar sus propios archivos multimedia, mientras que los administradores aún pueden ver y administrar todos los archivos.

Opción 2: Restringir el acceso a archivos multimedia para usuarios de WordPress sin permisos de edición de publicaciones

Este código es perfecto si deseas que los Editores y Administradores gestionen todos los archivos multimedia, mientras restringes a los Autores y Colaboradores solo a sus propias cargas.

add_filter( 'ajax_query_attachments_args', 'user_show_attachments' );
 
function user_show_attachments( $query ) {
    $user_id = get_current_user_id();
    // Checks if the current user is logged in (i.e., $user_id is not 0) and does not have the capabilities to activate plugins or edit others' posts.
    if ( $user_id && !current_user_can('activate_plugins') && !current_user_can('edit_others_posts
') ) {
        $query['author'] = $user_id;
    }
    return $query;
} 

Funciona verificando si un usuario tiene el permiso edit_others_posts, que es una capacidad que los Editores tienen por defecto, pero los Autores no.

A continuación, simplemente desplázate hasta la sección ‘Inserción’. WPCode puede agregar tu código a diferentes ubicaciones, como después de cada publicación, solo en el front-end o solo en el administrador.

Para usar el código PHP personalizado en todo tu sitio web de WordPress, haz clic en ‘Insertar automáticamente’ si aún no está seleccionado. Luego, abre el menú desplegable ‘Ubicación’ y elige ‘Ejecutar en todas partes’.

Ejecutar código PHP personalizado en todo tu sitio web usando WPCode

Después de eso, estás listo para desplazarte hasta la parte superior de la pantalla y hacer clic en el interruptor ‘Inactivo’ para que cambie a ‘Activo’.

Finalmente, haz clic en ‘Guardar fragmento’ para que el fragmento de PHP se active.

Cómo restringir el acceso a los archivos multimedia usando código

Ahora, los usuarios solo tendrán acceso a los archivos que suban a la biblioteca de medios de WordPress.

Preguntas Frecuentes

Aquí tienes algunas de las preguntas más comunes que recibimos sobre la organización de cargas multimedia en WordPress.

¿Es seguro agregar código personalizado a mi sitio de WordPress?

Agregar código directamente al archivo functions.php de tu tema puede ser arriesgado. Un pequeño error tipográfico o un fallo podría causar problemas o incluso dejar tu sitio inaccesible.

Es por eso que recomendamos encarecidamente usar el plugin WPCode. Crea una capa segura para agregar fragmentos de código, para que no tengas que preocuparte por romper nada.

¿Esto afectará el rendimiento de mi sitio web?

En absoluto. El fragmento de código que proporcionamos es muy ligero y funciona de manera eficiente.

Solo agrega una verificación simple cuando un usuario accede a la biblioteca de medios, por lo que no ralentizará tu sitio web para tus visitantes.

¿Puedo restringir el acceso a los medios para roles de usuario específicos?

¡Sí, absolutamente! El código se puede personalizar fácilmente para dirigirse a un rol de usuario específico. Por ejemplo, si quisieras que esta restricción se aplique solo a los usuarios con el rol de 'Autor', podrías usar este fragmento en su lugar:

add_filter( 'ajax_query_attachments_args', 'author_only_show_attachments' );

function author_only_show_attachments( $query ) {
    $user = wp_get_current_user();
    // Check if the current user has the 'author' role
    if ( in_array( 'author', (array) $user->roles ) ) {
        $query['author'] = $user->ID;
    }
    return $query;
}

Aprende más formas de administrar archivos de WordPress

Además de restringir las cargas de medios en WordPress, también podrías consultar las guías a continuación para administrar mejor tus archivos:

Esperamos que este artículo te haya ayudado a organizar mejor las cargas de medios por parte de los usuarios en tu sitio de WordPress. A continuación, puedes consultar nuestras selecciones expertas de los mejores plugins de slider para WordPress y nuestra guía sobre cómo cargar imágenes perezosamente fácilmente en WordPress.

Si te gustó este artículo, suscríbete a nuestro canal de YouTube para obtener tutoriales en video de WordPress. También puedes encontrarnos en Twitter y Facebook.

Descargo de responsabilidad: Nuestro contenido es compatible con el lector. Esto significa que si haces clic en algunos de nuestros enlaces, podemos ganar una comisión. Consulta cómo se financia WPBeginner, por qué es importante y cómo puedes apoyarnos. Aquí está nuestro proceso editorial.

El Kit de herramientas definitivo para WordPress

Obtén acceso GRATUITO a nuestro kit de herramientas: ¡una colección de productos y recursos relacionados con WordPress que todo profesional debería tener!

Interacciones del lector

13 CommentsLeave a Reply

  1. Cualquiera que busque una actualización podría querer considerar lo siguiente, que se encarga de los problemas de lista y cuadrícula

    // Para vista de lista
    add_action( ‘pre_get_posts’, ‘wpb_show_current_user_attachments_list_view’ );
    function wpb_show_current_user_attachments_list_view( $query ) {
    if ( is_admin() && $query->is_main_query() && $query->get(‘post_type’) === ‘attachment’ ) {
    $user_id = get_current_user_id();
    if ( $user_id && !current_user_can(‘administrator’) ) {
    $query->set(‘author’, $user_id);
    }
    }
    }

    // Para vista de cuadrícula
    add_filter( ‘ajax_query_attachments_args’, ‘wpb_show_current_user_attachments_grid_view’ );
    function wpb_show_current_user_attachments_grid_view( $query ) {
    $user_id = get_current_user_id();
    if ( $user_id && !current_user_can(‘administrator’) ) {
    $query[‘author’] = $user_id;
    }
    return $query;
    }

  2. ¡Increíble! ¡Está funcionando!

    Pero si se usa la aplicación de WordPress instalada desde el móvil, todos los usuarios aún pueden acceder a toda la biblioteca de medios. ¿Alguna solución?

    ¡Tu ayuda es muy apreciada!

  3. Puede que este no sea el post en el que deba preguntar esto, pero…

    What if you create a role for say, teacher. Is there a way or plugin that would filter so that one teacher can’t see another teacher media files? If that makes sense? :)

    Maestro-username1- medios (solo ve archivos multimedia de username1)
    Maestro-username2-medios (solo ve archivos multimedia de username2)

  4. En lugar de:

    !current_user_can(‘activate_plugins’)
    &&
    !current_user_can(‘edit_others_posts’)

    USAR:

    !current_user_can(‘administrator’)

    Porque, por ejemplo, si usas el plugin ‘User Role Editor’, podrías querer permitir que el usuario actual pueda activar plugins Y/O editar las publicaciones de otros.

    Just a thought, works for me :)

    ¡Gracias por la publicación!

  5. Buena publicación.

    ¿Y hay alguna forma de desautorizar la carga de archivos directamente a la biblioteca de medios y forzar a los usuarios (excepto a los administradores) a usar el botón Agregar medios dentro del editor de publicaciones/páginas?

Deja una respuesta

Gracias por elegir dejar un comentario. Ten en cuenta que todos los comentarios son moderados de acuerdo con nuestra política de comentarios, y tu dirección de correo electrónico NO será publicada. Por favor, NO uses palabras clave en el campo del nombre. Tengamos una conversación personal y significativa.