
Hacer que tu plugin sea compatible con HPOS en WooCommerce
WooCommerce ha introducido High-Performance Order Storage (HPOS) como una mejora significativa en la forma en que las órdenes son almacenadas y gestionadas en la base de datos. HPOS reemplaza la estructura basada en wp_posts
y wp_postmeta
con tablas personalizadas, lo que mejora la velocidad y escalabilidad de las tiendas en línea. Si tu plugin interactúa con los pedidos de WooCommerce, es fundamental actualizarlo para ser compatible con HPOS.
Verificar si tu plugin es compatible con HPOS
Antes de realizar cambios, debes confirmar si tu plugin ya es compatible con HPOS. Para ello:
- Activa HPOS en WooCommerce (Ajustes > Avanzado > Experimentos > Almacén de pedidos de alto rendimiento).
- Realiza pruebas para ver si tu plugin sigue funcionando correctamente.
- Revisa si tu código usa directamente
wp_posts
ywp_postmeta
para manejar pedidos.
Usar la API de WooCommerce en lugar de consultas directas
Si tu plugin realiza consultas directas a la base de datos para obtener pedidos, necesitas reemplazarlas con la API de WooCommerce. HPOS almacena los pedidos en tablas separadas ( wc_orders
y wc_order_meta
), por lo que código como este:
<?php $order = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}posts WHERE ID = $order_id AND post_type = 'shop_order'");
debe ser reemplazado por:
<?php $order = wc_get_order( $order_id );
Esto garantiza compatibilidad con cualquier método de almacenamiento de pedidos que WooCommerce implemente en el futuro.
Acceder y guardar metadatos de los pedidos correctamente
Si estás accediendo a metadatos de pedidos mediante wp_postmeta
, como en este ejemplo:
<?php $meta_value = get_post_meta( $order_id, '_custom_meta_key', true );
Debes cambiarlo a:
<?php $order = wc_get_order( $order_id ); $meta_value = $order->get_meta('_custom_meta_key');
Para guardar un metadato en un pedido, en lugar de usar update_post_meta
, usa:
<?php $order = wc_get_order( $order_id ); $order->update_meta_data('_custom_meta_key', 'custom_value'); $order->save()
Esto garantiza que los datos se almacenen correctamente sin importar si HPOS está activado o no.
Registrar compatibilidad con HPOS
WooCommerce permite a los desarrolladores indicar que su plugin es compatible con HPOS mediante el archivo plugin.php
. Agrega esta línea en el hook init
o en la carga de tu plugin:
<?php add_action( 'before_woocommerce_init', function() { if ( class_exists( '\\Automattic\\WooCommerce\\Utilities\\FeaturesUtil' ) ) { \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true ); } });
Esto indica a WooCommerce que tu plugin está preparado para HPOS.
Probar y depurar
Después de implementar estos cambios:
- Activa HPOS y prueba todas las funcionalidades de tu plugin.
- Usa
Query Monitor
oWooCommerce Logger
para detectar posibles errores. - Asegúrate de que no haya consultas directas a
wp_posts
relacionadas con pedidos.
Actualizar tu plugin para ser compatible con HPOS es un paso crucial para garantizar su rendimiento y compatibilidad con futuras versiones de WooCommerce. Siguiendo estas mejores prácticas, te aseguras de que tu plugin siga funcionando sin problemas y ofrezca una mejor experiencia a los usuarios.