La tabla wp_postmeta de WordPress es un almacén genérico de clave-valor adjunto a cada publicación. Así es como se almacenan post_title frente a post_content frente a custom_field_x. El esquema se ve así:
“sql CREATE TABLE wp_postmeta ( meta_id BIGINT(20) PRIMARY KEY, post_id BIGINT(20), meta_key VARCHAR(255), meta_value LONGTEXT, INDEX (post_id), INDEX (meta_key(191)) ); “
Sencillo. Flexible. Funciona para cualquier par clave-valor. Y en un sitio de WordPress típico con muchos plugins, es enorme: fácilmente millones de filas en un sitio de comercio electrónico de 5 años con muchos pedidos y metadatos de productos.
Esto es lo que sucede cuando cargas una página de archivo con 20 publicaciones, cada una con 10 campos personalizados:
“`sql — Consulta 1: Obtener publicaciones SELECT * FROM wp_posts WHERE post_type = ‘post’ LIMIT 20;
— Consultas 2-201: Para cada publicación, obtener cada campo SELECT meta_value FROM wp_postmeta WHERE post_id = 1 AND meta_key = ‘field_a’; SELECT meta_value FROM wp_postmeta WHERE post_id = 1 AND meta_key = ‘field_b’; — … 198 consultas más “`
200 consultas separadas. Cada consulta es rápida individualmente, pero la sobrecarga de ida y vuelta se acumula. En sitios que acceden a la base de datos a través de una red (común en hosting gestionado), esto puede añadir más de 500 ms a cada vista de página. El Desplazamiento Acumulativo del Diseño aumenta. Los Core Web Vitals disminuyen. El SEO sufre.
Los campos repetidores en ACF se almacenan con una fila de metadatos por subcampo por fila. Un repetidor con 5 subcampos y 10 filas crea 50 entradas de metadatos por publicación. Agrega 20 publicaciones a un archivo y estarás viendo más de 1,000 consultas de metadatos en una sola vista de página. Esta es la razón por la que los sitios con mucho ACF notoriamente se ralentizan más allá de cierta escala.
Field Forge almacena los valores de los campos en una tabla dedicada wp_fieldforge_values:
“sql CREATE TABLE wp_fieldforge_values ( id BIGINT(20) PRIMARY KEY, post_id BIGINT(20) NOT NULL, field_group_id BIGINT(20) NOT NULL, field_name VARCHAR(255) NOT NULL, parent_id BIGINT(20) NULL, -- para valores anidados (repetidor/grupo/flex) row_index INT NULL, -- para la posición de la fila del repetidor value LONGTEXT, INDEX (post_id, field_name), INDEX (post_id, field_group_id), INDEX (parent_id, row_index) ); “
Diferencias clave respecto a wp_postmeta:
parent_id, row_index) — los valores anidados (repetidor, grupo, flex) están estructurados, no concatenados en cadenawp_postmeta no contaminan los datos del campowp_postmeta no lo estáRealizamos referencias controladas en un sitio de prueba con 10,000 publicaciones, cada una con un grupo de campos que contiene 15 campos (3 texto, 2 WYSIWYG, 1 imagen, 1 repetidor con 5 subcampos, 1 contenido flexible con 3 tipos de diseño).
| wp_postmeta (ACF / SCF) | Tabla personalizada de Field Forge | |
|---|---|---|
| Consultas SQL | 302 | 1 (batch_load) |
| Tiempo de consulta (DB local) | 840ms | 95ms |
| Tiempo de consulta (DB en red, +20ms RTT) | 6,880ms | 115ms |
| Primer Pintado de Contenido | 2,100ms | 340ms |
| wp_postmeta | Field Forge | |
|---|---|---|
| Consultas SQL | 16 | 1 |
| Tiempo de consulta (DB local) | 45ms | 12ms |
| Tiempo de consulta (DB en red, +20ms RTT) | 365ms | 32ms |
| wp_postmeta | Field Forge | |
|---|---|---|
| Consultas SQL | 1,000 INSERTs | 1 INSERT de múltiples filas |
| Tiempo (DB local) | 1,240ms | 48ms |
| Tiempo (DB en red) | 21,240ms | 68ms |
En bases de datos conectadas a la red (que es como funciona casi todo el hosting de WordPress gestionado — Kinsta, WP Engine, Cloudways, SiteGround Cloud, etc.), la diferencia es dramática. La latencia de ida y vuelta es el costo dominante, y Field Forge realiza menos viajes de ida y vuelta.
API orientada a desarrolladores para carga por lotes explícita cuando la precarga automática de Field Forge no es suficiente:
“`php // Cargar campos para un conjunto específico de publicaciones en una consulta $post_ids = [1, 2, 3, 4, 5]; FieldForge::batch_load($post_ids);
// Ahora cualquier llamada a get_field() en estas publicaciones accede a la caché foreach ($post_ids as $id) { $hero = get_field(‘hero_title’, $id); // Sin consulta a la DB } “`
La llamada a batch_load() emite una única consulta WHERE post_id IN (...) y llena la caché en memoria de Field Forge para todas las publicaciones solicitadas. Las llamadas posteriores a get_field() son aciertos de caché.
Field Forge se integra en el filtro the_posts de WordPress para precargar automáticamente campos para la consulta principal. Las páginas de archivo, los resultados de búsqueda y las listas de categorías obtienen datos de campo cargados por lotes automáticamente — no se requieren cambios de código.
Field Forge respeta la API wp_cache_* de WordPress:
fieldforge) para que no entre en conflicto con otros plugins u operaciones de caché del núcleo.La invalidación de caché ocurre automáticamente en la actualización o eliminación de valores de campo a través de hooks de acción.
Páginas de archivo más rápidas, resultados de búsqueda más rápidos, plantillas dinámicas más rápidas. Los Core Web Vitals mejoran. La retención de clientes mejora porque el sitio “se siente ágil”.
Páginas de listado de productos con más de 30 productos y campos personalizados complejos se renderizan en el mismo tiempo que sitios más simples. Las interacciones del carrito de compras son más rápidas porque las cargas de metadatos de productos se agrupan.
Las respuestas de la API REST y WPGraphQL son más rápidas. Los generadores de sitios estáticos (Next.js ISR, Astro, Nuxt) realizan menos consultas a la base de datos por compilación. Los tiempos de compilación mejoran.
La capa de compatibilidad de ACF de Field Forge significa que las llamadas a get_field() en tu tema devuelven los mismos valores — pero provienen de la tabla personalizada, no de wp_postmeta. La mejora de rendimiento ocurre de manera transparente después de la migración.
Para ser justos: si tu sitio tiene menos de 500 publicaciones y campos personalizados simples (sin repetidores profundos, sin contenido flexible), el enfoque de wp_postmeta funciona. No notarás una diferencia de velocidad. La ventaja de rendimiento de Field Forge se vuelve significativa a gran escala — más de 1,000 publicaciones, repetidores complejos, o sitios en bases de datos conectadas a la red.
Obtén Field Forge — desde $35/año →
El almacenamiento de tablas personalizadas está incluido en cada versión de Field Forge, incluida la gratuita.