HPOS, High-Performance Order Storage, er den måde, WooCommerce gemmer ordrer på i dag: i egne tabeller, bygget til ordrer. Før lå ordrer i WordPress’ fælles tabeller for indlæg, og mange ældre webshops gør det stadig, fordi ingen har skiftet.
Her forklarer vi, hvad forskellen er, hvad der bliver hurtigere, og hvad der ikke gør, hvordan du ser, hvad din shop bruger, og hvad du skal tjekke, før du skifter.
Hvad er HPOS?
I den gamle model er en ordre et indlæg af typen shop_order i wp_posts, samme tabel som sider, blogindlæg og produkter. Alt det, der beskriver ordren, som adresser, beløb, betalingsmetode og status på fragt, ligger som separate rækker i wp_postmeta: én række pr. oplysning.
Med HPOS ligger ordrer i fire tabeller, der kun er til ordrer: wc_orders til selve ordren, wc_order_addresses til faktura- og leveringsadresse, wc_order_operational_data til WooCommerce’ egne driftsoplysninger og wc_orders_meta til det, plugins gemmer på ordren. Ifølge WooCommerce’ dokumentation om HPOS (på engelsk) er det standard i nye shops fra WooCommerce 8.2, som kom i oktober 2023.
Hvorfor den gamle model bliver langsom
wp_postmeta er bygget til at kunne gemme hvad som helst: et navn og en værdi pr. række. Det gør den fleksibel, men ikke hurtig at søge i. Skal WooCommerce finde ordrer med en bestemt e-mail, filtrere på betalingsmetode eller sortere på beløb, skal databasen lede i værdier, der ikke er indekseret til det, og samle mange rækker pr. ordre.
Samtidig deler ordrerne tabellerne med alt andet på sitet. Hver ny ordre lægger en række i wp_posts og mange i wp_postmeta, så tabellerne vokser med salget, og det rammer også forespørgsler, der intet har med ordrer at gøre. HPOS giver ordrerne faste kolonner med indekser til netop de opslag, WooCommerce laver. Hvordan databasen i det hele taget bliver hurtig, gennemgår vi i guiden til WordPress-databasens performance.
Hvad bliver hurtigere, og hvad gør ikke
HPOS handler om ordrer. Det er der, du mærker det:
- Ordrelisten i admin: visning, filtrering og søgning på navn, e-mail eller ordrenummer.
- Oprettelse af ordrer i checkout: færre rækker at skrive pr. ordre.
- Rapporter og plugins, der slår ordrer op: når de bruger WooCommerce’ egne funktioner til det.
- Resten af databasen:
wp_postsogwp_postmetaholder op med at vokse med hver ordre.
Produkter ligger stadig i wp_posts, så HPOS gør ikke produkt- og kategorisider hurtigere, og en langsom forside skyldes noget andet. Er det især ordrelisten og admin, der er langsom, er HPOS ofte det første, du skal se på. De andre årsager står i vores guide til en langsom WooCommerce-admin. Er det hele shoppen, så start med fejlfindingsguiden.
Bruger din shop HPOS?
Gå til WooCommerce → Indstillinger → Avanceret → Funktioner. Under ordrelagring står, om shoppen bruger HPOS (High-performance order storage) eller den gamle lagring i WordPress’ indlæg. Du kan også se det på adressen, når du åbner ordrelisten: med HPOS hedder den admin.php?page=wc-orders, med den gamle model edit.php?post_type=shop_order.
Shops, der er startet før WooCommerce 8.2, bruger typisk stadig den gamle model. Opdateringer af WooCommerce skifter ikke selv lagringen. Det skal gøres med vilje.
Plugins skal kunne følge med
Det, der afgør, om du kan skifte, er dine plugins. Et plugin, der læser og skriver ordrer gennem WooCommerce’ egne funktioner, virker med begge modeller. Et plugin, der går direkte til wp_posts og wp_postmeta, ser ikke de ordrer, der ligger i de nye tabeller. Det gælder også gammel specialkode i temaet eller i et lille plugin, som en tidligere udvikler har skrevet.
Plugins melder selv, om de er kompatible, og WooCommerce viser en advarsel med de plugins, der ikke er, på samme side som indstillingen. Typisk er det fragt, betaling, fakturering, regnskab og lager, der rører ordrerne. Er et plugin markeret som ukompatibelt, så se efter en nyere version, og spørg udvikleren. Er det ikke markeret som nogen af delene, så test det på en kopi.
Kompatibilitetstilstand: begge tabeller på én gang
WooCommerce kan holde de gamle og de nye tabeller synkroniseret, så ordrerne findes begge steder. Det kaldes kompatibilitetstilstand. Slår du det til, kopierer WooCommerce de eksisterende ordrer over i baggrunden, i portioner gennem køen af planlagte handlinger, og skriver nye ordrer begge steder.
Det er broen, der gør skiftet sikkert: så længe begge sider er synkroniserede, kan du skifte frem og tilbage. Men at skrive hver ordre to gange koster, så kompatibilitetstilstand er en overgang og ikke en permanent indstilling. Den forudsætter også, at køen faktisk kører. Er den i forvejen lang eller fyldt med fejl, så ryd op først. Hvorfor den skal køre fra serveren, står i afsnittet om baggrundsjob.
Sådan skifter du, i korte træk
- Tag en backup, og lav en kopi af shoppen, du kan teste på.
- Gennemgå advarslen om ukompatible plugins, og opdatér eller udskift dem.
- Slå kompatibilitetstilstand til, og vent, til alle ordrer er synkroniseret. WooCommerce viser, hvor mange der mangler.
- Skift til HPOS på kopien, og gå hele forløbet igennem: en ny ordre, betaling, fragt, fakturering, refusion og de integrationer, der får ordrer.
- Gør det samme på den rigtige shop, på et roligt tidspunkt, og lad synkroniseringen køre et stykke tid, så du kan skifte tilbage.
- Slå kompatibilitetstilstand fra, når du er sikker på, at alt virker.
Hvert trin, og det du skal holde øje med undervejs, gennemgår vi i HPOS-migrering uden nedetid.
Skal du sælge meget snart, fx op til Black Friday, så skift i god tid eller vent til bagefter. Et skifte er ikke noget, du vil teste i ugen med flest ordrer.
Ofte stillede spørgsmål
Kan jeg skifte tilbage, hvis noget går galt?
Ja, så længe kompatibilitetstilstand er slået til, og begge sider er synkroniserede. Derfor skal du først slå den fra, når du er sikker.
Mister jeg ordrer ved at skifte?
Ikke hvis synkroniseringen er færdig, før du skifter. De gamle data bliver liggende i wp_posts og wp_postmeta. Tag alligevel en backup først.
Gør HPOS min shop hurtigere for kunderne?
Mest i admin og når ordrer oprettes. Produktsider, kategorier og forsiden bliver ikke hurtigere af HPOS alene.
Vil du have hjælp?
Det sværeste ved HPOS er sjældent selve skiftet, men at vide, om alle plugins og integrationer kan følge med. Vil du have, at vi tjekker det, så læs om optimering af din WooCommerce-shop. Vi kigger gratis på din shop først og siger, hvad der skal til.