HPOS este prescurtarea de la High-Performance Order Storage, noul mod în care WooCommerce își păstrează comenzile: într-un set de tabele dedicate, în loc de tabelele generale ale WordPress. Dacă vinzi cu WooCommerce, ai văzut probabil măcar o dată mesajul „acest plugin nu este compatibil cu HPOS” și te-ai întrebat dacă trebuie să faci ceva. Răspunsul scurt este că trebuie să știi ce înseamnă, pentru că un plugin incompatibil poate bloca activarea HPOS sau, mai rău, poate citi și scrie comenzile în locul greșit.
Ghidul explică ce schimbă HPOS, cum verifici compatibilitatea pluginurilor, cum treci în siguranță la noul mod de stocare și ce trebuie să respecte codul propriu, dacă ai pluginuri scrise la comandă.
Pe scurt: HPOS mută comenzile din wp_posts și wp_postmeta în tabele proprii, făcute pentru comenzi. Se activează din WooCommerce, Setări, Avansat, Funcționalități, iar aceeași pagină îți arată pluginurile incompatibile. Un plugin este compatibil dacă accesează comenzile prin API-ul WooCommerce (wc_get_order, $order->get_meta()), nu direct din baza de date.
Ce este HPOS și ce schimbă
La începuturile WooCommerce, comenzile s-au salvat ca înregistrări de tip „post” în tabelul wp_posts, iar datele lor (adresa, totalul, metoda de plată) în wp_postmeta. Era o soluție rapidă de implementat, dar are o limită: aceleași tabele găzduiesc paginile, articolele, produsele și comenzile, iar un magazin cu mii de comenzi îi încarcă în mod nepotrivit.
HPOS înlocuiește această structură cu tabele dedicate (printre ele wc_orders, wc_order_addresses, wc_order_operational_data și wc_orders_meta), proiectate pentru interogări pe comenzi. Beneficiile oficiale sunt interogări mai simple, mai puțină încărcare pe tabelul general de conținut și o bază mai bună pentru volume mari. Pentru un magazin mic efectul poate să nu se simtă în viteză, iar noi nu promitem cifre: beneficiul real este că ai o arhitectură pe care WooCommerce o dezvoltă în continuare.
HPOS este implicit pentru magazinele noi în versiunile recente de WooCommerce. Magazinele mai vechi au încă stocarea clasică, până când o schimbi tu.
Cum verifici ce stocare folosești
În admin, deschide WooCommerce, apoi Setări, Avansat, Funcționalități (Features). Secțiunea „Stocarea datelor comenzilor” arată două opțiuni: stocarea clasică, prin posturări WordPress, și stocarea de mare performanță, adică HPOS. Tot acolo există o opțiune de mod de compatibilitate, care sincronizează comenzile în ambele locuri pe durata tranziției, și o listă cu pluginurile pe care WooCommerce le consideră incompatibile cu HPOS.
Cum verifici dacă pluginurile tale sunt compatibile
Un plugin declară compatibilitatea în cod, printr-un apel către WooCommerce în momentul încărcării. Dacă pluginul nu face acest apel, WooCommerce îl tratează ca necunoscut. Pașii de verificare sunt:
- Deschide pagina Funcționalități și citește lista de pluginuri incompatibile.
- Pentru fiecare plugin care atinge comenzile (facturare, livrare, plată, export), verifică pagina lui sau documentația pentru mențiunea „HPOS compatible”.
- Dacă un plugin nu declară compatibilitatea, scrie dezvoltatorului și cere o dată de lansare.
- Testează pe staging fluxul real al pluginului, nu doar activarea: generează o factură, un AWB, o rambursare.
Pluginul nostru MaxDev Facturare cu ANAF salvează datele de facturare prin API-ul WooCommerce și declară compatibilitatea cu HPOS, exact pentru ca datele clientului să rămână corecte indiferent de modul de stocare ales.
Cum treci în siguranță la HPOS
Trecerea se face în pași, iar ordinea contează:
- Backup complet al bazei de date și al fișierelor.
- Staging: copiază magazinul și fă toată tranziția acolo mai întâi.
- Activează modul de compatibilitate, ca să se sincronizeze datele în ambele sisteme.
- Lasă sincronizarea să se termine și verifică că numărul de comenzi coincide între cele două locuri.
- Alege HPOS ca stocare principală și testează comenzi noi, cu fiecare metodă de plată și de livrare.
- Păstrează compatibilitatea activă încă o perioadă, ca să poți reveni fără pierderi.
- Oprește sincronizarea abia când ești sigur că totul merge, apoi rulează testele finale.
Dacă magazinul folosește și checkout cu blocuri sau îl migrezi în același timp, nu face ambele schimbări împreună: așa cum e descris în ghidul despre checkout cu blocuri sau clasic, fiecare schimbare merită testată separat, ca să știi care a produs o eventuală problemă.
Ce trebuie să respecte codul tău
Dacă ai pluginuri sau cod personalizat care lucrează cu comenzi, regula este una: nu citi și nu scrie comenzile direct în baza de date, ci prin API-ul WooCommerce.
| Nu folosi | Folosește |
|---|---|
| get_post_meta( $order_id, ... ) | $order->get_meta( ... ) |
| update_post_meta( $order_id, ... ) | $order->update_meta_data( ... ) urmat de $order->save() |
| get_post( $order_id ) | wc_get_order( $order_id ) |
| WP_Query cu post_type shop_order | wc_get_orders( $args ) |
| Interogări SQL pe $wpdb->posts | Metodele WooCommerce sau tabelele HPOS prin API |
Pluginul trebuie să și declare compatibilitatea, la acțiunea before_woocommerce_init:
add_action( 'before_woocommerce_init', function () {
if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) {
\Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility(
'custom_order_tables',
__FILE__,
true
);
}
} );
Declarația nu înlocuiește testele. Un plugin care declară compatibilitatea, dar folosește încă get_post_meta pe comenzi, va funcționa doar atunci când modul de compatibilitate e activ.
Probleme frecvente după activare
- Facturi sau AWB-uri care nu se mai generează. Un plugin citește comanda din locul vechi, iar comanda nouă există doar în tabelele HPOS.
- Exporturi goale sau incomplete. Rapoartele scrise direct pe
wp_postsnu mai văd comenzile noi. - Meta datele lipsesc. Datele salvate prin
update_post_metanu apar în HPOS decât în modul de compatibilitate. - Rapoartele din alte tool-uri diferă. Integrările cu programe de contabilitate sau de logistică trebuie testate după schimbare. Dacă ai o integrare API construită la comandă, verific-o înainte, nu după.
Cine ar trebui să activeze HPOS acum
Magazinele noi îl au deja. Magazinele existente, cu pluginuri cunoscute și compatibile, pot trece oricând, cu pașii de mai sus. Cele cu multe pluginuri la comandă sau cu integrări ERP, curieri și facturare ar trebui să-și facă întâi un audit al codului, iar dacă nu ai o echipă tehnică internă, un serviciu de mentenanță WordPress poate face tranziția și monitorizarea de după.
Întrebări frecvente
Ce se întâmplă cu comenzile vechi dacă activez HPOS?
Se copiază în tabelele noi prin sincronizare, iar cele vechi rămân în locul lor atunci cât modul de compatibilitate e activ. Nu se șterge nimic automat.
Pot reveni la stocarea clasică?
Da, dacă ai păstrat sincronizarea activă și datele sunt la zi în ambele locuri. De aceea nu opri sincronizarea imediat.
HPOS face magazinul mai rapid?
Poate ajuta la volume mari de comenzi, dar nu garantăm o viteză anume. Măsoară înainte și după, nu presupune.
Un plugin fără declarație de compatibilitate nu funcționează?
Poate funcționa, dar WooCommerce îl consideră necunoscut. Testează-l pe staging înainte să treci magazinul pe HPOS.
Trebuie să migrez și checkout-ul pe blocuri ca să folosesc HPOS?
Nu. HPOS și checkout-ul cu blocuri sunt două schimbări independente: poți folosi HPOS cu checkout clasic.
Dacă vrei să verificăm împreună magazinul înainte de trecerea pe HPOS, vezi cum lucrăm la dezvoltarea WooCommerce.
