WooCommerce / HPOS
HPOS a WooCommerce: problemes, migració i codi a mida
High-Performance Order Storage (HPOS) trasllada les comandes de WooCommerce de les taules d’entrades de WordPress a taules pròpies. Les botigues guanyen consultes de comandes més ràpides; el codi que llegeix les comandes a l’antiga deixa de veure-les.
Resposta curta
HPOS desa les comandes en taules pròpies com wp_wc_orders en lloc de wp_posts i wp_postmeta. El codi que fa servir get_post_meta(), WP_Query o SQL directe sobre comandes deixa de funcionar quan HPOS és l’emmagatzematge principal. S’arregla fent servir l’API de comandes de WooCommerce (wc_get_orders(), wc_get_order(), $order->get_meta()) i migrant amb el mode de compatibilitat activat perquè tots dos emmagatzematges continuïn sincronitzats.
Problemes concrets
Problemes d’HPOS habituals
Codi a mida que deixa de veure les comandes
get_post_meta(), WP_Query amb shop_order i SQL sobre wp_posts.
Extensions incompatibles
WooCommerce no deixa activar HPOS mentre hi hagi plugins incompatibles actius.
Migració i sincronització
Comandes pendents de sincronitzar, migracions lentes en botigues grans, errors durant la sincronització.
Diferències de dades entre emmagatzematges
Comandes o meta que no coincideixen entre les taules d’entrades i les taules de comandes.
Taules de comandes antigues
Informes, exportacions i integracions que encara llegeixen les taules antigues.
Consultes directes a la base de dades
SQL en codi a mida, eines d’informes i integracions externes.
Què canvia amb HPOS
Abans les comandes eren entrades de WordPress de tipus shop_order, amb les dades repartides entre wp_posts i wp_postmeta. Amb HPOS, les comandes viuen en taules pròpies (wp_wc_orders, wp_wc_orders_meta, wp_wc_order_addresses i wp_wc_order_operational_data) dissenyades per a consultes de comandes.
El codi que fa servir l’API de comandes de WooCommerce continua funcionant, perquè l’API llegeix l’emmagatzematge que sigui el principal. El codi que se la salta, no.
| Falla amb HPOS | Funciona amb tots dos emmagatzematges |
|---|---|
get_post_meta( $order_id, '_clau', true ) |
wc_get_order( $order_id )->get_meta( '_clau' ) |
update_post_meta( $order_id, … ) |
$order->update_meta_data( … ); $order->save(); |
new WP_Query( [ 'post_type' => 'shop_order' ] ) |
wc_get_orders( [ … ] ) |
SQL sobre wp_posts / wp_postmeta per a comandes |
Consultes de comandes mitjançant l’API |
El mode de compatibilitat és la xarxa de seguretat
Amb el mode de compatibilitat activat, WooCommerce manté sincronitzades les taules d’entrades i les taules de comandes. Això permet una migració gradual: activar la sincronització, deixar que acabi, verificar, canviar l’emmagatzematge principal a HPOS i mantenir la sincronització fins a estar-ne segur, perquè continuï sent possible tornar enrere.
Preguntes freqüents
Què és HPOS a WooCommerce?
High-Performance Order Storage: un sistema que desa les comandes en taules pròpies de la base de dades en lloc de fer-ho a les taules genèriques d’entrades i meta de WordPress. És l’opció per defecte a les botigues noves des de WooCommerce 8.2.
Com sé si la meva botiga fa servir HPOS?
Ves a WooCommerce → Paràmetres → Avançat → Característiques. S’hi indica quin emmagatzematge de comandes és el principal i si el mode de compatibilitat (sincronització) està activat.
Per què get_post_meta() no retorna res a les comandes?
Perquè amb HPOS com a emmagatzematge principal, les dades de la comanda són a les taules de comandes, no a wp_postmeta. Llegeix-les a través de l’objecte de la comanda: wc_get_order( $id )->get_meta( 'clau' ).
$ descriu el problema
Tens un problema amb WooCommerce?Sol·licita una diagnosi.
Explica'ns què falla, què ha canviat darrerament i com afecta el negoci. Revisem cada sol·licitud i et recomanem el pas següent.
No enviïs mai contrasenyes, claus d'API ni dades de targetes a través del formulari.