Compatibilidad con HPOS (Custom Order Tables)
Advanced Subscriptions es nativo HPOS. Lee y escribe suscripciones a través de la interfaz de Custom Order Tables de WooCommerce, no contra la tabla legacy wp_posts. No existe fallback al sistema CPT antiguo: en una instalación nueva, HPOS es la única ruta de almacenamiento que usa el plugin.
Qué es HPOS, en un párrafo
HPOS (High-Performance Order Storage) es el backend de datos de pedidos de WooCommerce, introducido en WC 7.1 y convertido en el valor por defecto para instalaciones nuevas en WC 8.2. Pedidos, devoluciones y suscripciones viven en tablas dedicadas (wc_orders, wc_order_addresses, wc_order_operational_data, wc_orders_meta) en lugar de en wp_posts y wp_postmeta. Resultado: consultas más rápidas, esquemas más limpios, y se acabó tener el custom post type "shop_order" engordando la tabla de posts.
Prerequisitos
- WooCommerce 8.2 o superior. Versiones anteriores soportan HPOS como opt-in; lo hemos probado hasta WC 7.1 pero recomendamos 8.2+.
- PHP 7.4+ (PHP 8.x recomendado por los índices en los que HPOS se apoya).
- Cualquier otra extensión activa que toque pedidos debe declarar compatibilidad con HPOS. WooCommerce muestra un aviso en WooCommerce → Ajustes → Avanzado → Características listando por nombre los plugins incompatibles.
Activar HPOS
- Ve a WooCommerce → Ajustes → Avanzado → Características.
- En Tablas personalizadas de pedidos, elige Almacenamiento de pedidos de alto rendimiento (nuevo).
- WooCommerce migra los pedidos existentes en segundo plano a través de Action Scheduler. El job es incremental; la tienda sigue usable mientras corre.
- Cuando la migración termine, desactiva modo de compatibilidad para detener la escritura doble a
wp_posts. Este es el punto sin retorno para esa tienda; guarda backup.
Coexistencia con extensiones no compatibles con HPOS
Si uno de tus otros plugins aún no ha declarado compatibilidad HPOS, hay dos caminos:
- Mantén el modo de compatibilidad activo. WooCommerce escribe en doble: a
wp_postsy a las nuevas tablas. La ganancia de rendimiento es parcial, pero el plugin incompatible sigue funcionando. Este es el default seguro mientras esperas que el otro proveedor publique la actualización. - Desactiva ese plugin y pasa HPOS a full. La tienda recibe toda la mejora; pierdes la funcionalidad de ese plugin hasta que esté actualizado.
Advanced Subscriptions no fuerza esta decisión. Funcionamos en cualquiera de los dos modos.
Cómo usa el plugin HPOS
- Lecturas con
wc_get_order()ywc_get_orders()usandotype => 'aswc_subscription'. NingúnWP_Querydirecto contra la tabla de posts. - Escrituras a través de la API estándar
WC_Order::save(). El plugin extiendeWC_Orderpara su claseASWC_Subscription, por lo que la capa de datos es HPOS-nativa automáticamente. - Índices de los que dependemos en las queries de renovación:
type,status, y las columnas operacionalesdate_paid_gmtydate_completed_gmt. Todos forman parte del esquema HPOS.
Hooks relevantes
aswc_subscription_query_args— filtra los args que usawc_get_orders()cuando el plugin consulta suscripciones. HPOS-aware.aswc_subscription_object_class— cambia la clase PHP que se instancia para una suscripción. Útil para extensiones HPOS que envuelvan nuestro objeto.