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 y wp_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  o WooCommerce 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.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Back to Top
0
Would love your thoughts, please comment.x
()
x