X

Restringir usuarios para que solo vean los elementos de la biblioteca de medios que subieron

Snippets de IsItWP

¿Está buscando una forma de restringir a los usuarios para que solo vean los elementos de la biblioteca de medios que ellos mismos suben? Aunque probablemente exista un plugin para esto, hemos creado un fragmento de código rápido que puede usar para restringir a los usuarios a ver solo los elementos de la biblioteca de medios que suben en WordPress.

Instrucciones:

Todo lo que tienes que hacer es agregar este código al archivo functions.php de tu tema o a un plugin específico del sitio:

function my_files_only( $wp_query ) {
    if ( strpos( $_SERVER[ 'REQUEST_URI' ], '/wp-admin/upload.php' ) !== false ) {
        if ( !current_user_can( 'level_5' ) ) {
            global $current_user;
            $wp_query->set( 'author', $current_user->id );
        }
    }
}

add_filter('parse_query', 'my_files_only' );

Nota: Si es la primera vez que agregas fragmentos de código en WordPress, consulta nuestra guía sobre cómo agregar fragmentos de código correctamente en WordPress, para que no rompas accidentalmente tu sitio.

Si te gustó este fragmento de código, considera echar un vistazo a nuestros otros artículos en el sitio como: Los 7 mejores servicios de VPN para usuarios de WordPress y Cómo crear un formulario de donaciones para WordPress.

Comentarios   Deja una respuesta

  1. nos acabamos de dar cuenta de que, aunque estos scripts funcionan en WordPress web, la versión de Android/móvil de la biblioteca de medios sigue siendo visible para todos.

  2. un pequeño cambio que hice en el código para que funcione en el front-end en mi página de perfil

    //si ( false !== strpos( $_SERVER[ ‘REQUEST_URI’ ], ‘/wp-admin/upload.php’ ) ) { if ($wp_query->query_vars[‘post_type’]==”attachment”){

    de esta manera está funcionando correctamente.

    1. Gracias Prasanna, me registré en una cuenta de Disqus solo para agradecerte.

      1. Yo también

  3. My new best friend: ajax_query_attachments_args | Alicia Ramirez March 3, 2014 at 6:17 pm

    […] buscando en Google encontré muchas referencias (aquí, y aquí, por ejemplo ) a esto […]

  4. ¡Funcionó! (WP 3.8.1) ¡Gracias!

  5. hola, gracias por el código. ¡muy útil!

    sin embargo, otros usuarios todavía pueden ver los archivos adjuntos si tienen un enlace directo. ¿hay alguna forma de evitar esto? es decir, que solo el propietario de los medios (y el administrador) puedan ver los archivos adjuntos. otros usuarios o el público no pueden verlos.

    Gracias.

  6. Puse ese código... pero tengo un contador incorrecto para las publicaciones de medios...

    El usuario actual no tiene publicaciones de medios... mientras que tengo Todos (15) | Imágenes (15) | Sin adjuntar (2)

    quiero mostrar el conteo para el usuario actual... no para todos....

    1. Simplemente oculté todos los números de conteo con CSS: subsubsub .count {display: none; }

  7. ?afak SARAÇO?LU May 6, 2013 at 12:00 pm

    Çok te?ekkür ederim – Gracias

  8. Christopher Grasso April 2, 2013 at 6:35 pm

    Muchas gracias por esto... Role Scoper estaba interfiriendo con otro plugin y esa era la única función que quería, que las imágenes estuvieran limitadas... Gracias por actualizarlo para que funcione con la nueva biblioteca de medios, funciona a la perfección.

  9. ¿Alguien sabe cómo restringir al usuario también cuando sube un archivo desde insertar o editar una publicación? De hecho, cuando presiono el botón Agregar medios, la ventana emergente me muestra la pestaña Biblioteca de medios, con todos los medios subidos por todos los usuarios. Estoy usando WP 3.5.1. ¡Gracias!

    1. Mira mi respuesta a designlabCPH arriba. Inserta esta función en tu archivo de funciones, y la biblioteca de medios se restringirá solo a los archivos propios de los usuarios.

      1. No me funciona 🙁 Quiero que los usuarios que no son administradores puedan ver solo sus propios archivos, también cuando están creando publicaciones, solo ver sus propias imágenes cuando agregan imágenes destacadas, etc.

      2. No me funciona 🙁 Quiero que los usuarios que no son administradores puedan ver solo sus propios archivos, también cuando están creando publicaciones, solo ver sus propias imágenes cuando agregan imágenes destacadas, etc.

      3. No me funciona 🙁 Quiero que los usuarios que no son administradores puedan ver solo sus propios archivos, también cuando están creando publicaciones, solo ver sus propias imágenes cuando agregan imágenes destacadas, etc.

      4. No me funciona 🙁 Quiero que los usuarios que no son administradores puedan ver solo sus propios archivos, también cuando están creando publicaciones, solo ver sus propias imágenes cuando agregan imágenes destacadas, etc.

      5. ¡Ahora funciona! ¡Muchas gracias!

  10. Usé el plugin Role Scoper. He estado buscando resolver esto todo el día. Role Scoper solo permitirá que el usuario conectado vea su propio contenido y sus propias publicaciones por defecto. Puedes cambiar esto si también lo deseas. Biblioteca de Medios Privada para Autores 😉

  11. Jashua Peter Grafstein October 9, 2012 at 5:17 pm

    ¿Hay alguna forma de configurar esta línea de código para restringir la biblioteca de medios solo a los contribuidores? De esa manera, los contribuidores solo pueden ver los medios que suben y los administradores pueden ver todo.

  12. ¿Hay alguna forma de programar esta línea de código para que solo se aplique a niveles de membresía específicos? (es decir, los contribuidores solo pueden ver sus cargas de medios, pero los administradores pueden ver todo)

  13.  Estoy usando WP 3.3.1 y esto no funciona. ¿Hay alguna actualización del código? Gracias.

    1. Mira mi respuesta arriba. Publiqué una función que funcionará con el nuevo administrador de medios (WP 3.5+)

  14. Tengo una pregunta, Kevin, ¿cómo restringir que un contribuidor suba medios?

    1. Hola Rian,
      En la línea 3 verás “level_5” en esta página de WordPress, tiene detalles sobre cuáles son los niveles de usuario, puedes cambiar ese nivel. http://codex.wordpress.org/User_Levels#User_Level_5_2

      1. No me di cuenta de que el rol predeterminado para contribuidor es no poder subir ningún medio. Lo intenté anoche... jaja.

        ¡Muchas gracias Kevin! :)

        1. De nada, cuando quieras.

  15. Gracias Kevin,  es muy útil, pero ¿cómo arreglar el  ‘número total de archivos’?

    1. ¡Me alegra saber que te gusta el fragmento! Bueno, el total sigue siendo correcto ya que los archivos existen, aunque entiendo tu punto. Lo revisaré en un futuro cercano para ver si puedo publicar un fragmento.

  16. gracias por la publicación. justo lo que estaba buscando. 
    hice un pequeño cambio >> también agregué el archivo media-upload.php a esta línea de código. esto también filtrará las imágenes /mediafiles por encima del editor wysiwyg.
    presta

    1. Hola Sheila,

      ¿Dónde/Qué publicaste en cuanto a código en el archivo media-upload.php? Estoy recibiendo un error cuando pego el código. ¡Gracias de antemano!

  17. Encontré un problema, la biblioteca de medios todavía muestra todo el contenido en la ventana emergente de insertar medios en la publicación. (lo mismo que en la plantilla de otras páginas también)

    sin embargo, agregué get global $post, y agregué otra condición para las publicaciones.

    ‘/wp-admin/media-upload.php?post_id=’.$post->ID.’&type=image&tab=library’

    pero no funcionó..

    1. Arreglé esto agregando una segunda cláusula
      “|| strpos( $_SERVER[ ‘REQUEST_URI’ ], ‘/wp-admin/media-upload.php’ ) !== false”

      1. ¿Cómo diablos haces que esto funcione en WP 3.5?

        Lo he intentado todo (creo, aunque no soy programador de PHP) incluido agregar tu solución anterior, y simplemente no puedo hacer que funcione.

        Necesito que solo los administradores puedan ver todos los medios en la ventana emergente de la biblioteca, y que todos los demás (incluidos los editores) solo puedan ver sus respectivas imágenes... ¿Te importaría explicármelo? 🙂

        1. Usa Role Scoper si aún no lo has resuelto, amigo. Logra este mismo problema. Está activado por defecto cuando instalas el plugin. Tanto la Biblioteca de Medios como las publicaciones. Para tu información.

          1. He pasado horas hoy solo para arreglar ese problema de carga de usuarios, y descubrí que es el único código que funciona. ¡Gracias!

        2. Tienes que cambiar algunos parámetros para que esto funcione con el nuevo gestor de medios.

          Puedes usar esta función (nota que creé una capacidad de “manage_media_library”. Solo si el usuario la tiene, verá archivos que no son suyos):

          add_action(‘pre_get_posts’,’ml_restrict_media_library’);
          function ml_restrict_media_library( $wp_query_obj ) {

          global $current_user, $pagenow;

          if( !is_a( $current_user, ‘WP_User’)

          return;

          if( ‘admin-ajax.php’ != $pagenow || $_REQUEST[‘action’] != ‘query-attachments’ )

          return;

          if( !current_user_can(‘manage_media_library’)

          $wp_query_obj->set(‘author’, $current_user->ID );

          return;

          }

          1. Estaba buscando exactamente esto: ‘admin-ajax.php’ != $pagenow || $_REQUEST[‘action’] != ‘query-attachments’
            ¡muchas gracias!

          2. ¿Dónde pusiste esto?

          3. ¡como un nuevo plugin! bien, ¡esto me funciona!

          4. excelente solución de código Patrick – arregló mi problema rápidamente – Ojalá hubiera encontrado esto en diciembre. : ) ¡gracias!

          5. Intenté tu código en un plugin, directamente en function.php pero no funciona. Tengo Wordpress 3.5.1 y quiero usarlo en el front-end con el botón add media de la función wp_editor.
            Lo intenté en wp-admin pero tampoco funciona.

            ¿Tienes alguna idea de por qué no funciona ???

          6. ¡Usé esto, muchas felicitaciones para ti!

  18. Este fragmento es muy útil para mi sitio de múltiples bloggers. ¡Deberías convertirlo en un plugin de WP! gracias =)

    1. Genial, me alegra que te guste el fragmento, no estoy seguro de que valga la pena agregarlo como plugin, aunque podría configurarse como uno.

      1. Deberías, estoy teniendo dificultades en el grupo de complementos para encontrar esto y al final me rendí y busqué recursos externos, lo que me llevó hasta aquí. ¡Me encanta tu blog, fragmentos directos al grano. ¡Aprendo mucho de aquí!
        ¡Iluminaste mi día, gracias Chard! =)

        1. De nada, me alegra que te guste el sitio web. ¡Visítanos regularmente, publicamos a diario!

Agrega un comentario

Nos complace que hayas elegido dejar un comentario. Ten en cuenta que todos los comentarios se moderan de acuerdo con nuestra política de privacidad, y todos los enlaces son nofollow. NO uses palabras clave en el campo del nombre. Tengamos una conversación personal y significativa.

Lista de verificación para lanzar WordPress

La lista de verificación definitiva para lanzar WordPress

Hemos recopilado todos los elementos esenciales de la lista de verificación para el lanzamiento de tu próximo sitio web de WordPress en un práctico ebook.
¡Sí, envíame el eBook gratis!