Salta al contingut
WooRescueHQ

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.

/ca/woocommerce/hpos/codi-personalitzat/

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.

Sol·licitar una diagnosi Veure serveis i preus

No enviïs mai contrasenyes, claus d'API ni dades de targetes a través del formulari.

Diagnosi des de299 €

Sol·licitar una diagnosi