✅Cómo Restringir la Biblioteca de Medios en WordPress por Usuario (Sin Plugins)

Cuando gestionas un sitio de WordPress con varios autores y editores, todos ellos comparten una única biblioteca de medios. Esto puede convertirse en un verdadero caos, ya que cualquier creador puede accidentalmente borrar o modificar una imagen que no le pertenece. Sin embargo, existe una solución sencilla y eficaz para este problema. Con un código de apenas unas líneas, puedes restringir el acceso a la biblioteca de medios, de manera que solo los administradores tengan acceso completo. Todos los demás usuarios solo podrán ver y gestionar sus propios archivos.

restringir acceso biblioteca de medios wordpress

El siguiente código tienes que agregarlo en el functions.php de tu tema hijo o utilizar un plugin como CODE SNIPPETS.

/**
 * Restringir acceso a la biblioteca de medios para que solo los administradores tengan acceso completo.
 * Los demás roles solo pueden ver sus propios archivos.
 */
function custom_restrict_media_library_by_role($query) {
    // Obtener el ID del usuario actual
    $current_user = wp_get_current_user();
    
    // Verificar que el usuario no sea administrador
    if ( !in_array('administrator', $current_user->roles) ) {
        // Limitar la consulta para mostrar solo las imágenes subidas por el usuario actual
        $query->set('author', $current_user->ID);
    }
}

// Enganchar la función al gancho 'pre_get_posts' para modificar la consulta
add_action('pre_get_posts', 'custom_restrict_media_library_by_role');

Lenguaje del código: PHP (php)

Entendiendo el Código

  1. Función custom_restrict_media_library_by_role:
    • Esta función se ejecuta cuando WordPress realiza consultas a la biblioteca de medios. Toma un parámetro $query, que representa la consulta de WordPress.
  2. Obtención del Usuario Actual:
    • wp_get_current_user() se utiliza para obtener el objeto del usuario actualmente autenticado en WordPress, representado por $current_user.
  3. Verificación del Rol:
    • Se verifica si el usuario actual no tiene el rol de ‘administrator’ (administrador). Esto se realiza con !in_array('administrator', $current_user->roles). Si el usuario es administrador, no se aplica ninguna restricción adicional.
  4. Limitación de la Consulta:
    • Si el usuario no es administrador, se limita la consulta para que solo recupere las imágenes subidas por el usuario actual. Esto se logra mediante $query->set('author', $current_user->ID), donde 'author' es el parámetro de consulta que limita los resultados al autor (usuario) específico.
  5. Enganche de la Función:
    • add_action('pre_get_posts', 'custom_restrict_media_library_by_role') asegura que la función custom_restrict_media_library_by_role se ejecute antes de que WordPress realice la consulta a la biblioteca de medios (pre_get_posts es el gancho de acción utilizado para modificar consultas antes de que se ejecuten).

Funcionamiento:

  • Cuando un usuario intenta acceder a la biblioteca de medios en WordPress, WordPress realiza una consulta para obtener los elementos que se mostrarán.
  • La función custom_restrict_media_library_by_role interviene antes de que se ejecute la consulta (pre_get_posts) y verifica el rol del usuario.
  • Si el usuario no es un administrador, se modifica la consulta para limitarla a mostrar solo los archivos (imágenes en este caso) que fueron subidos por ese usuario específico.
  • Esto asegura que los usuarios que no son administradores solo puedan ver y administrar sus propios archivos en la biblioteca de medios, manteniendo la seguridad y la organización de los recursos multimedia en el sitio.

Este enfoque es útil en sitios con múltiples colaboradores, donde es crucial evitar que los usuarios accedan y modifiquen archivos que no les corresponden, al tiempo que permite a los administradores mantener el control total sobre la biblioteca de medios.

Nos vemos en el siguiente tutorial.

Un saludo.

5/5 - (2 votos)
Compartir Artículo

Un comentario

  1. Fran Salas Master WP 1 año atrás

    Deja tus opiniones o dudas en los comentarios.

¿Tienes una duda o sugerencia sobre este artículo?

Puedes dejar un comentario de forma anónima, sin necesidad de registrarte ni proporcionar ningún dato personal. Tu mensaje se publicará como “Usuario Anónimo No Premium”, un perfil que agrupa a todos los visitantes no registrados.

Importante: para evitar el spam automático, todos los comentarios anónimos deben comenzar con el símbolo #. Ejemplo: # Tengo una duda sobre los shortcodes personalizados...

Este espacio está destinado exclusivamente a preguntas concretas, dudas o sugerencias relacionadas con el contenido del artículo. Por respeto a los demás lectores, no se publicarán temas sin relación.

Privacidad y normas:
  • No tienes que agregar tu nombre, correo ni ningún otro dato identificativo.
  • No se permiten enlaces en comentarios anónimos.
  • No se permiten símbolos especiales como < o > (menor y mayor que), ya que se consideran intentos de insertar código y serán bloqueados.
  • Todos los comentarios anónimos pasan por revisión antes de ser publicados y solo se aprobarán si aportan valor al contenido del artículo.
¿Quieres comentar con tu nombre y que tu mensaje se publique al instante? Inicia sesión o regístrate.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

0%