Si llevas un tiempo con WordPress y la biblioteca de medios pasa de unos cientos de archivos, ya sabes lo que toca ¿verdad?
Buscas una imagen que subiste hace tres meses, no recuerdas el nombre del archivo, te plantas delante de un mosaico interminable y empiezas a hacer scroll y clics hasta encontrarla … o desistir.
Esto pasa porque la gestión de medios de WordPress en general, y la biblioteca en particular, a estas alturas, sigue sin tener un modo de organización decente, ni clasificación por carpetas de forma nativa, ni siquiera un buscador instantáneo decente , y parece ser que esto sí que alguien ha decidido que sea territorio plugins, o no se, buscarte la vida.
Total, que vamos a ver qué opciones tenemos de organizar ese desastre que es la (no) organización de medios en WordPress, que haberlas haylas.
Empezaremos repasando los plugins más interesantes, y luego te cuento algún apaño más.
Ojito con esto: carpetas virtuales y carpetas físicas
Antes de elegir plugin tienes que entender una cosa que no te cuentan bien, porque hay dos formas de organizar la biblioteca con carpetas, y casi no se suele decir, y es importante, al menos yo creo que lo es.
Carpetas virtuales
El plugin no toca tus archivos, lo que hace es crear una taxonomía o estructura interna en la base de datos que asocia cada imagen con una «carpeta».
En el servidor todo sigue en /wp-content/uploads/2026/04/ como siempre, ordenado por año y mes. Si miras por FTP, ahí no hay carpetas que valgan, solo cambia lo que ves en el escritorio de WordPress.
Carpetas físicas
El plugin mueve los archivos de verdad, de modo que si creas una carpeta «catálogo» y metes una imagen, el archivo se traslada a /wp-content/uploads/catalogo/imagen.jpg.
La URL del archivo cambia, y por tanto el plugin tiene que reescribir todas las referencias en la base de datos para que nada se rompa.
Cada enfoque tiene ventajas y problemas:
- Las virtuales son más seguras, rápidas y no rompen nada al activarlas, pero te atan al plugin de por vida (luego vemos por qué).
- Las físicas son más limpias, mejores para SEO y FTP, pero el proceso de migración es delicado y puede dejar enlaces rotos si algo va mal.
¿Qué pasa con las carpetas virtuales cuando desactivas el plugin?
Aquí está la trampa principal y donde se nota la diferencia entre plugins. Si todas tus carpetas son virtuales y un día decides desactivar o cambiar de plugin, esto es lo que pasa:
- Los archivos siguen en el servidor, en sus carpetas
/uploads/año/mes/de toda la vida, sin cambios. Eso es lo bueno. - La estructura de carpetas que habías montado durante meses o años desaparece de la vista en cuanto desactivas. La biblioteca vuelve a ser ese mosaico infinito de antes.
- Si te pasas a otro plugin de carpetas virtuales, la mayoría tienen herramienta de importación, así que se puede migrar. Pero solo si el otro plugin sigue mantenido y tiene importador para el tuyo.
- Si el plugin muere o el desarrollador desaparece, dependes de que otro plugin meta soporte para importar desde él, y eso no siempre pasa.
O sea, con carpetas virtuales te casas con el plugin. Tu organización de medios deja de ser tuya, pasa a vivir en la base de datos del plugin que tengas instalado. No es un problema todos los días, pero el día que toca cambiar, si cambias, lo es.
Con carpetas físicas pasa lo contrario, pues si desinstalas el plugin los archivos siguen organizados en el servidor como los habías dejado.
La biblioteca de WordPress los seguirá viendo, porque la URL de cada imagen está guardada en su tabla de adjuntos. Pierdes la interfaz cómoda de carpetas en el escritorio, pero no pierdes la organización.
¿Lo tienes claro? pues empezamos, y si ya has tomado alguna decisión te saltas la parte que no te interesa.
Plugins para organizar la biblioteca de medios
Dicho lo anterior, para que te sea más fácil decidirte, te ordeno los plugins bajo este criterio, así sabes por dónde te andas.
Plugins que usan el sistema de carpetas virtuales
Son la mayoría, y funcionan a base de taxonomía personalizada para adjuntos.
FileBird
El más popular con diferencia, con más de 200.000 instalaciones activas en WordPress.org. Tiene versión gratuita generosa (carpetas ilimitadas, drag and drop, búsqueda) y Pro desde 25 USD con licencia de por vida para un sitio.
Importa la estructura de prácticamente todos los demás, es compatible con Elementor, Divi, Gutenberg, WPBakery, WooCommerce, WPML y Polylang.
Tiene un punto débil, y es que en los últimos años se le han reportado y parcheado varias vulnerabilidades de seguridad, así que mantenlo actualizado siempre.
HappyFiles (Pro)
Este es de lo más limpio y rápido del mercado, pero retiró la versión gratuita en 2022 y actualmente solo se vende Pro a 59 USD de pago único para sitios ilimitados, con devolución de 60 días.
La gran ventaja sobre los demás es que organiza también entradas, páginas, productos de WooCommerce y cualquier tipo de contenido personalizado, no solo medios, así que si vas a tener carpetas para todo el escritorio, este es el que tiene más sentido.
Folders
También está gratis en WordPress.org y tiene versión Pro de pago. Organiza medios, páginas y entradas, importa desde FileBird, Real Media Library, WP Media Folder, HappyFiles y otros.
Tiene una interfaz sencilla, buen punto de entrada para quien empieza.
Real Media Library (Lite)
Tiene versión Lite gratis con carpetas principales ilimitadas, y Pro desde 17 USD que añade subcarpetas, accesos directos en varias carpetas a la vez y más.
Es de los plugins mejor mantenidos del grupo y la curiosidad es que es un modelo mixto, porque su versión básica es virtual, pero si necesitas carpetas reales tiene una extensión que sí las mueve (lo vemos en la siguiente familia).
CatFolders
El recién llegado al sector, con una interfaz moderna, rendimiento decente, buen ajuste con Gutenberg. Va ganando cuota poco a poco.
Si te gusta probar lo nuevo o no te han convencido los otros plugins échale un ojo.
Plugins que usan el sistema de carpetas físicas
Si prefieres tener todo organizado como en tu ordenador, en directorios de verdad, estos son los que merece la pena probar.
WP Media Folder
Funciona por defecto con carpetas virtuales, pero en sus ajustes hay una opción que se llama justamente «Physical Folders» que las convierte en reales.
El propio fabricante avisa en su documentación de que activarla es delicado, porque desactiva algunas funciones del propio plugin y porque la migración toca muchas tablas.
Es el plugin más caro de la lista (desde 69 USD anuales con add-ons), pero también el único que integra sincronización con Google Drive, Dropbox, OneDrive y S3 de serie.
Real Media Library + Real Physical Media
Instalas Real Media Library de antes, para tener el árbol de carpetas, y encima la extensión Real Physical Media reflejada esa estructura en el servidor.
Cuando mueves un archivo se mueve de verdad, físicamente, con redirecciones 301 automáticas para que nada quede roto. Tiene cola en segundo plano para no tumbar el servidor con muchos archivos.
Es la opción más profesional para quien quiere de verdad carpetas físicas con SEO bien resuelto.
Media Library Folders
Este plugin de Max Foundry esta disponible gratis en WordPress.org y con versión Pro. Crea carpetas reales en el servidor desde el primer momento.
No hay modo virtual ni nada que activar, las carpetas que ves son carpetas de verdad, y lo bueno es la simplicidad conceptual, pues lo que ves es lo que hay.
Lo malo es que para sitios grandes con muchos enlaces internos a imágenes, la reorganización inicial puede ser dura.
Comparativa rápida
| Plugin | Tipo de carpeta | ¿Gratis? | Precio Pro | Para quién |
|---|---|---|---|---|
| FileBird | Virtual | Sí | Desde 25 USD lifetime | Mayoría de webs, lo más usado |
| HappyFiles | Virtual | No | 59 USD lifetime, sitios ilimitados | Agencias y quien quiere carpetas en todo el escritorio |
| Folders (Premio) | Virtual | Sí | Varios planes | Quien empieza y busca algo sencillo |
| Real Media Library | Virtual | Sí | Desde 17 USD | Bien mantenido, base para combinar con el add-on físico |
| CatFolders | Virtual | Sí | Varios planes | Quien quiere probar algo nuevo y ligero |
| WP Media Folder | Virtual o física | No | Desde 69 USD/año | Sitios con almacenamiento en la nube (Drive, S3, etc.) |
| Real Media Library / Real Physical Media | Física | Sí / No | RMA desde 17 USD + RPM aparte | SEO serio de imágenes, URLs descriptivas |
| Media Library Folders (Max Foundry) | Física | Sí | Versión Pro disponible | Quien quiere carpetas físicas sin complicarse |
¿Y no se puede hacer algo sin plugins? ¡Taxonomías al rescate!
WordPress permite asignar taxonomías a los adjuntos, por si no lo sabías. Es en realidad lo mismo que usan por dentro casi todos los plugins virtuales.
Así que si te animas te olvidas de los plugins, y con unas líneas de código puedes registrar una taxonomía «carpeta» y empezar a clasificar tus imágenes desde la propia ficha de cada archivo.
Ya te aviso antes de empezar que esto no te va a dar interfaz de arrastrar y soltar, ni árbol de carpetas en la biblioteca. Lo que te ofrece son categorías que puedes asignar a cada imagen una a una, y filtros para luego encontrarlas y mostrarlas.
Si tienes la biblioteca a base de cientos de archivos y quieres organización rápida con clics, esto no es lo que necesitas, pero si lo tuyo es bibliotecas pequeñas o eres desarrollador y prefieres no depender de un plugin más, te sirve más que de sobra.
<?php
/**
* Plugin Name: Carpetas para organizar la biblioteca de medios
* Plugin URI: https://servicios.ayudawp.com
* Description: Organización ligera y todo con funciones nativas para crear y organizar medios usando carpetas mediante una taxonomía personanlizada.
* Version: 1.0
* Author: Fernando Tellado
* Author URI: https://tellado.es
* License: GPL-2.0-or-later
* Text Domain: ayudawp
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Registro de la taxonomía media_folder para los adjuntos.
*/
function ayudawp_register_media_folders_taxonomy() {
$labels = array(
'name' => 'Carpetas de medios',
'singular_name' => 'Carpeta de medios',
'search_items' => 'Buscar carpetas',
'all_items' => 'Todas las carpetas',
'parent_item' => 'Carpeta principal',
'parent_item_colon' => 'Carpeta principal:',
'edit_item' => 'Editar carpeta',
'update_item' => 'Actualizar carpeta',
'add_new_item' => 'Añadir nueva carpeta',
'new_item_name' => 'Nombre de la nueva carpeta',
'menu_name' => 'Carpetas',
);
$args = array(
'hierarchical' => true,
'labels' => $labels,
'public' => true,
'publicly_queryable' => false,
'show_ui' => true,
'show_in_menu' => true,
'show_admin_column' => true,
'show_in_rest' => true,
'query_var' => true,
'rewrite' => false,
);
register_taxonomy( 'media_folder', array( 'attachment' ), $args );
}
add_action( 'init', 'ayudawp_register_media_folders_taxonomy' );
/**
* Reemplazar la entrada de texto por defecto para media_folder en la pantalla de edición de adjuntos
* y la ventana emergente de medios con un menú desplegable.
*
* Usamos los slugs de los términos como valores de opción porque el núcleo de WordPress procesa
* las taxonomías de adjuntos como cadenas separadas por comas después de que se ejecute este filtro.
* Si pasamos IDs numéricos de términos, el núcleo intentará encontrar un slug que coincida con ese
* número y, si falla eso, crear un nuevo término con ese nombre.
*/
function ayudawp_replace_folder_field_in_modal( $form_fields, $post ) {
$taxonomy = 'media_folder';
if ( ! isset( $form_fields[ $taxonomy ] ) ) {
return $form_fields;
}
$terms = get_terms(
array(
'taxonomy' => $taxonomy,
'hide_empty' => false,
'orderby' => 'name',
'order' => 'ASC',
)
);
if ( is_wp_error( $terms ) || empty( $terms ) ) {
$form_fields[ $taxonomy ]['input'] = 'html';
$form_fields[ $taxonomy ]['html'] = '<em>Primero crea carpetas en Medios > Carpetas.</em>';
return $form_fields;
}
$assigned = wp_get_object_terms( $post->ID, $taxonomy, array( 'fields' => 'slugs' ) );
$assigned = is_wp_error( $assigned ) ? array() : $assigned;
$name = 'attachments[' . absint( $post->ID ) . '][' . $taxonomy . ']';
$id = 'attachments-' . absint( $post->ID ) . '-' . $taxonomy;
$html = '<select name="' . esc_attr( $name ) . '" id="' . esc_attr( $id ) . '" style="min-width:200px;">';
$html .= '<option value="">(none)</option>';
foreach ( $terms as $term ) {
$selected = in_array( $term->slug, $assigned, true ) ? ' selected' : '';
$html .= '<option value="' . esc_attr( $term->slug ) . '"' . $selected . '>' . esc_html( $term->name ) . '</option>';
}
$html .= '</select>';
$form_fields[ $taxonomy ]['input'] = 'html';
$form_fields[ $taxonomy ]['html'] = $html;
return $form_fields;
}
add_filter( 'attachment_fields_to_edit', 'ayudawp_replace_folder_field_in_modal', 20, 2 );
/**
* Añade un menú desplegable de filtro de carpetas a la vista de lista de la biblioteca de medios.
*/
function ayudawp_add_folder_filter_to_media_list( $post_type ) {
if ( 'attachment' !== $post_type ) {
return;
}
$taxonomy = 'media_folder';
$terms = get_terms(
array(
'taxonomy' => $taxonomy,
'hide_empty' => false,
)
);
if ( is_wp_error( $terms ) || empty( $terms ) ) {
return;
}
$current = isset( $_GET[ $taxonomy ] ) ? sanitize_key( wp_unslash( $_GET[ $taxonomy ] ) ) : '';
echo '<select name="' . esc_attr( $taxonomy ) . '">';
echo '<option value="">Todas las carpetas</option>';
foreach ( $terms as $term ) {
echo '<option value="' . esc_attr( $term->slug ) . '" ' . selected( $current, $term->slug, false ) . '>' . esc_html( $term->name ) . '</option>';
}
echo '</select>';
}
add_action( 'restrict_manage_posts', 'ayudawp_add_folder_filter_to_media_list' );
/**
* Añade un menú desplegable de filtro de carpetas a la vista de cuadrícula de la biblioteca de medios y a la ventana emergente,
* usando wp_add_inline_script adjunto al manejador media-views.
*/
function ayudawp_add_folder_filter_to_grid_view() {
$terms = get_terms(
array(
'taxonomy' => 'media_folder',
'hide_empty' => false,
'orderby' => 'name',
'order' => 'ASC',
)
);
if ( is_wp_error( $terms ) || empty( $terms ) ) {
return;
}
$folders = array();
foreach ( $terms as $term ) {
$folders[] = array(
'slug' => $term->slug,
'name' => $term->name,
);
}
$js = '(function() {
if ( typeof wp === "undefined" || ! wp.media || ! wp.media.view || ! wp.media.view.AttachmentFilters ) {
return;
}
var folders = ' . wp_json_encode( $folders ) . ';
var FolderFilter = wp.media.view.AttachmentFilters.extend({
id: "media-attachment-folder-filter",
createFilters: function() {
var filters = {};
filters.all = {
text: "Todas las carpetas",
props: { media_folder: "" },
priority: 10
};
folders.forEach(function(folder, index) {
filters["folder_" + folder.slug] = {
text: folder.name,
props: { media_folder: folder.slug },
priority: 20 + index
};
});
this.filters = filters;
}
});
var originalCreateToolbar = wp.media.view.AttachmentsBrowser.prototype.createToolbar;
wp.media.view.AttachmentsBrowser.prototype.createToolbar = function() {
originalCreateToolbar.call( this );
this.toolbar.set( "mediaFolderFilter", new FolderFilter({
controller: this.controller,
model: this.collection.props,
priority: -75
}).render() );
};
})();';
wp_add_inline_script( 'media-views', $js );
}
add_action( 'admin_enqueue_scripts', 'ayudawp_add_folder_filter_to_grid_view' );
/**
* Filtra la consulta de adjuntos AJAX para que la vista de cuadrícula y la ventana emergente de medios
* respeten la carpeta seleccionada.
*/
function ayudawp_filter_attachments_query( $args ) {
if ( empty( $_REQUEST['query']['media_folder'] ) ) {
return $args;
}
$slug = sanitize_key( wp_unslash( $_REQUEST['query']['media_folder'] ) );
if ( '' === $slug ) {
return $args;
}
$args['tax_query'] = array(
array(
'taxonomy' => 'media_folder',
'field' => 'slug',
'terms' => $slug,
),
);
return $args;
}
add_filter( 'ajax_query_attachments_args', 'ayudawp_filter_attachments_query' );
Pega este código en un plugin propio o en un mu-plugin, no lo metas en el functions.php del tema porque el día que cambies de tema te quedas sin carpetas y sin selector.
Si lo guardas como /wp-content/mu-plugins/ayudawp-media-folders.php se activa solo, que es lo más cómodo para uso personal.
Al activarlo te encuentras esto:
- En el menú de medios aparece «Carpetas» para crear y gestionar las carpetas como si fueran categorías, con jerarquía padre-hijo incluida.
- En la ficha de edición de cada adjunto sale la caja meta de carpetas a la derecha, con casillas de selección.
- En la ventana emergente de insertar imagen aparece el campo «Carpetas» con un desplegable.
- En el listado de medios en vista de lista hay una columna nueva «Carpeta» y un filtro.
- En la vista de cuadrícula de la biblioteca y en el modal de medios aparece también un filtro de carpetas en la barra de herramientas superior.
Algunas pequeñas limitaciones
- Solo permite una carpeta por archivo en el selector de la ventana emergente. La caja meta de la ficha permite varias por ser de tipo
checkbox. Si quieres consistencia ajusta uno de los dos. - No hay arrastrar y soltar, ni árbol al estilo Finder, esto son selectores y desplegables. Para interfaz más cómoda, plugin al canto.
- El filtro de la vista de cuadrícula aparece también en la ventana emergente de insertar imagen en el editor de entradas y páginas, pues ambos usan el mismo componente de WordPress. Si te molesta en la ventana emergente hay forma de limitarlo solo a la pantalla principal de la biblioteca pero alarga el código.
- Si tienes muchas carpetas (más de veinte o treinta), el desplegable se hace incómodo. Cualquier plugin profesional resuelve esto con un árbol lateral, aquí no lo tienes.
Aun con esas limitaciones, hace su trabajo y te deja la organización guardada en tablas estándar de WordPress (wp_terms, wp_term_taxonomy, wp_term_relationships), sin dependencia de un plugin de terceros que pueda desaparecer mañana.
Si un día decides instalar FileBird o cualquier otro, la mayoría tienen importador de taxonomías estándar y pueden recuperar la organización sin que tengas que reasignar las imágenes a mano.
Y entonces ¿cuál elijo?
Respuesta corta y al grano:
- Si quieres lo más sencillo, gratis y popular: FileBird. Manténlo actualizado siempre por las vulnerabilidades pasadas.
- Si llevas una agencia o varias webs y vas a usar carpetas para entradas, páginas y productos además de medios: HappyFiles.
- Si te importa el SEO de las imágenes, quieres URLs limpias y descriptivas y no te asusta el proceso de migración: Real Media Library con el add-on Real Physical Media.
- Si combinas WordPress con Google Drive, Dropbox o almacenamiento en la nube: WP Media Folder.
- Si quieres carpetas físicas reales sin complicarte con add-ons: Media Library Folders de Max Foundry.
- Si eres desarrollador o prefieres montar tu propio sistema mínimo sin atarte: taxonomía personalizada con el código de arriba.
Sea cual sea tu elección, antes de instalar pregúntate si podrías vivir si esE plugin desaparece mañana. Si la respuesta es que no, estás eligiendo mal, o estás eligiendo bien pero asumiendo el riesgo conscientemente, que también vale.
Y sobre todo, antes de tocar la biblioteca de medios de una web en producción, haz copia de seguridad, y si vas a migrar a carpetas físicas, prueba primero en un staging.
Estas operaciones tocan miles de archivos y registros, y un fallo a mitad puede dejarte la biblioteca con imágenes huérfanas y enlaces rotos en posts antiguos.
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!












