• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal

Dani Sánchez

  • ¿Eres agencia?
  • Quién soy
  • Servicios WordPress
    • Mantenimiento
    • Maquetación & Desarrollo
    • Soporte técnico
  • Portfolio
  • Blog
  • Presupuestos
Estás en: Inicio / Publicaciones / Modificar la Biblioteca de Medios para que los usuarios solo vean sus propios archivos (WordPress)

Modificar la Biblioteca de Medios para que los usuarios solo vean sus propios archivos (WordPress)

El 16 de enero de 2018 por dani.sanchez

En el último post vimos cómo dar permisos a nuestros usuarios colaboradores para cargar archivos a la Biblioteca de Medios y poder usarlos en sus entradas. Llegados a este punto, puede que nos interese hacer que nuestros colaboradores sólo puedan ver sus propios archivos y los de nadie más.

Esto como siempre podemos implementarlo mediante código en el archivo functions.php o también mediante un sencillo plugin. Vamos a ver ambos métodos, pues cada uno tiene sus ventajas e inconvenientes.

Por un lado, usar código nos obliga a estar al tanto del Códex de WordPress por si en una futura actualización se modifica alguna función, hook o metodología, que haga errar nuestro código. En cambio ganaremos en optimización, pues los plugins que instalamos siempre incluyen archivos, funciones y código que no necesitamos.

El código:

<?php
//Limitar el acceso a la librería solo a tus propios archivos
 function mostrar_solamente_archivos_del_usuario($query){
    $user_id = get_current_user_id();

    if($user_id && !current_user_can('activate_plugins') && !current_user_can('edit_others_posts')){
        $query['author'] = $user_id;
    }
    return $query;
} 
add_filter('ajax_query_attachments_args', 'mostrar_solamente_archivos_del_usuario');
?>

Si optamos por usar el plugin, conviene asegurarnos de que su autor lo actualiza con frecuencia para mantener la compatibilidad con las nuevas versiones de WordPress.

En este caso vamos a usar WP Users Media, que en el momento de escribir este artículo, hace unas 3 semanas que se actualizó, lo cual indica que su autor lo está manteniendo.

Su configuración es muy simple, y una vez instalado y activado nos dirigimos al menú Ajustes – WP Users Media y solo tenemos que marcar los roles a los que aplicar la restricción de ver únicamente sus archivos en la biblioteca de medios:

Si también queremos ampliar esta limitación al administrador (por si existen varios administradores en el sitio web), podemos marcar la opción:

Y eso es todo de momento. Espero que esta nueva serie de Posts ayuden a aquellos que como yo, necesitaban habilitar zonas especiales para que otros usuarios puedan añadir contenido al sitio web.

Un saludo y hasta el próximo post!

Publicado en: Publicaciones, Tutoriales, WordPress Etiquetado como: colaboradores, desarrollo web, php, plugins, programación web, publicaciones, tutoriales

¿Quiéres invitarme a un café?

Si te has fijado en este blog no hay ni rastro de publicidad, todo el contenido publicado lo hago de forma artruista al igual que yo recurro a otros sitios cuando necesito algo. Pero si te he servido de ayuda y quieres agradecérmelo, puedes hacer una pequeña donación (el importe que quieras):

Entradas similares

  • Cerrar modales de Elementor con JavaScript (jQuery)
  • Redirección 301 para cambios de dominio
  • Guía rápida de Flexbox
  • Filtro de WooCommerce para personalizar el mensaje de «Gracias por tu pedido»
  • Portátiles reacondicionados, ¿mejor que uno nuevo?

Interacciones con los lectores

Comentarios

  1. Mari dice

    28 de noviembre de 2019 a las 01:24

    El codigo me marca error de sintaxis en la linea 5

    • Daniel, Gestionatuweb.net dice

      28 de noviembre de 2019 a las 09:30

      Cierto, hay un error en el código provocado por el plugin que uso para el resaltado de códigos de ejemplo, que modifica las &&…

      Ya está modificado, gracias por avisar.

  2. Darkyx dice

    16 de junio de 2020 a las 05:58

    Crack!! Gracias me ayudaron muchisimo.!! Buena vibra bro

  3. Lenyman dice

    16 de julio de 2020 a las 08:43

    Hola Daniel… gracias por el código!! Pero no me ha ido bien: luego de ponerlo al principio del functions.php de mi tema hijo me salió error 500 en el navegador y no pude volver a acceder. Tuve que editar el archivo desde mi cliente FTP para borrar el código y volver a la normalidad. Mi WordPress es 4.8.13
    ¿Alguna sugerencia? Me gustaría poder ocultar la librería por código, no por plugin. Gracias.

    • Daniel, Gestionatuweb.net dice

      16 de julio de 2020 a las 09:22

      Hola, no lo pongas al principio, ponlo al final y asegurate que al copiar y pegar no se distorsiona el código (las comillas o algún signo de puntuación). Un saludo.

      • Lenyman dice

        17 de julio de 2020 a las 08:31

        It is working!!!! 🙂
        Comparto mi experiencia por si le sirve a alguien más: puse el código al final y lo revisé, pero seguía con el problema. Gracias a Dios que me iluminó justo cuando iba a darme por vencido… me dijo, hijo mío ¿por qué no sacas ese «» y pruebas?…. Así lo hice y está funcionando de maravillas!
        Gracias Daniel!!

        • Lenyman dice

          18 de julio de 2020 a las 07:25

          Para aclarar, donde dice ¿por qué no sacas ese «» y pruebas? me refería a las etiquetas de apertura y cierre de un archivo PHP (el sistema de comentarios me borró el texto en el comentario anterior). Por mi inexperiencia, copié todo el código tal cual…. pero al agregarlo al archivo functions NO se deben dejar dichas etiquetas. Saludos.

          • Daniel, Gestionatuweb.net dice

            27 de julio de 2020 a las 09:19

            Cierto, yo incluyo las etiquetas PHP en el código para que se entienda que es código PHP, pero entiendo que si se incluyen por medio del functions.php que ya tiene las etiquetas abiertas al principio, ocasionará error.

            Siempre doy por hecho que quien llega aquí y copia un código para su proyecto, tiene un mínimo de idea de lo que está haciendo 🙂

  4. Miguel dice

    22 de diciembre de 2020 a las 17:43

    Muy bueno y me ayuda un monton, pero tengo una duda y es si se puede hacer que también cada usuario tenga su propia carpeta con sus archivos/imagenes dentro.

    Así de esta forma si tenemos 100 usuarios, cada uno tendría su propia carpeta (por ejemplo con el mismo nombre que el usuario) con sus imágenes que él solo podría ver y utilizar, y todo estaría mucho mas ordenado.

    Por ejemplo:

    Administrador tiene sus imagenes en /upload/

    Perico en /upload/perico/

    Antonio en /upload/antonio/

    ¿Eso se podría hacer? Y ¿se podría hacer que se crearan de forma automática al registrarse el usuario y si se da de baja que se borre con todo?

    Gracias

    • dani dice

      23 de diciembre de 2020 a las 08:21

      Hola, la biblioteca de medios de WordPress solo se puede clasificar de dos formas: en una única carpeta (uploads) o en subcarpetas por año y mes (upload/2020/12/). No es posible clasificarlos por nombre de usuario de forma nativa.

      Para ello deberías buscar algún plugin de gestión de uploads o descargas.

  5. Jorge Guzman dice

    12 de marzo de 2021 a las 19:28

    Hola Daniel, habría oportunidad de especificar otros permisos como que sólo los que subieron sus archivos sean los únicos que pueden borrar o editar sus archivos que puedan ser vistos por cualquier otro?

    • dani dice

      12 de marzo de 2021 a las 20:31

      No entiendo del todo lo que sugieres.

      ¿Te refieres a que todos vean los archivos de todos, pero solo puedan editar/borrar los propios?

      Si es así, entonces bastaría con dar a ese rol la capacidad edit_posts:

      $role = get_role(‘contributor’);
      $role->add_cap(‘edit_posts’, true);

      Saludos.

  6. Hugo Arturo dice

    31 de mayo de 2022 a las 19:02

    Buen dia Daniel buen código me ayudo bastante espero puedas auyudarme o darme una orientación de como hacer que los usuarios solo puedan borrar o editar sus entradas y no la de los demás usuarios de un grupo de rol, gracias y saludos

    • Dani Sánchez dice

      6 de junio de 2022 a las 07:30

      Creo que el rol que buscas es el de autor, que puede crear, editar y borrar solamente sus propias entradas. Aquí tienes una tabla con las capacidades asignadas por defecto a cada rol. https://wordpress.org/support/article/roles-and-capabilities/ Por supuesto existen funciones para añadir o quitar capacidades a los roles por defecto o crear los tuyos propios. Tengo un artículo sobre ello: https://danisanchez.net/como-crear-roles-personalizados-en-wordpress-sin-plugins/ Saludos.

Barra lateral principal

Autor

Dani Sánchez

logo mastodon @danisanchez

Entradas recientes

  • Iniciar sesión en nuestros VPS mediante SSH Keys
  • Cerrar modales de Elementor con JavaScript (jQuery)
  • Redirección 301 para cambios de dominio
  • Guía rápida de Flexbox
  • Filtro de WooCommerce para personalizar el mensaje de «Gracias por tu pedido»

Comentarios recientes

  1. Brandon Portes en Taller de verano de WooCommerce #1
  2. Sebastian en Instalar WordPress + MySQL + phpMyAdmin desde Docker Compose
  3. Rigol en Instalar LAMP (Linux, Apache, MySQL y PHP) en Fedora
  4. dani.sanchez en Instalar WordPress + MySQL + phpMyAdmin desde Docker Compose
  5. rikylinux en Instalar WordPress + MySQL + phpMyAdmin desde Docker Compose

Categorías

  • Actualidad
  • Afiliación AliExpress
  • Agent Press Pro
  • Bettaso Web Restaurantes
  • Cursos
  • Destacado
  • Divi
  • Drupal
  • Elementor
  • Genesis
  • Iniciación a PHP
  • Joomla!
  • Linux
  • Publicaciones
  • Tutoriales
  • WooCommerce
  • WordPress
Medium banner says Support Inkscape
Banner pie de página

Maquetación web, landings, blogs y tiendas online
cuidando hasta el mínimo detalle

Si necesitas que desarrolle tu proyecto web ponte en contacto conmigo.

Contacto
  • Mastodon
  • YouTube
  • LinkedIn

Alojado con energía 100% verde

Dani Sánchez © 2025 · Política de privacidad · Política de cookies