Gå direkte til indholdet

Cookieindstillinger

Vælg for hver type, hvilke cookies du tillader. Du kan altid ændre dit valg via Cookieindstillinger nederst på hver side. Privatlivspolitik

Nødvendige

Altid slået til

Nødvendige for at logge ind, gemme din kurv og huske dine valg. De er altid slået til.

Hvilke cookies?
  • weboke_sessie, weboke_klant, weboke_remember: din session og at forblive logget ind
  • weboke_basket: din kurv
  • wkBtwIncl: vise priser med eller uden moms
  • wok_cookies: dit cookievalg, 12 måneder

Måler, hvilken annonce der fører til et besøg eller en bestilling, så vi ikke betaler for annoncer, der ikke virker.

Hvilke cookies?
  • Google Ads via Google Tag Manager (_gcl_au, _gcl_aw), op til 90 dage
  • OpenAI Ads, annoncer i ChatGPT
  • wok_aff: hvilken partner der henviste dig til os (affiliateprogram), 60 dage

4,6

Land og sprog

Hvert land har sin egen side med landets priser og moms.

Se

Sådan fungerer WooCommerce

Modul 1: Før du starter · Læsetid: 10 minutter

Læringsmål: Efter denne lektion kan du forklare, hvordan WooCommerce fungerer i WordPress, og hvor produkter, ordrer, kurven og de planlagte opgaver ligger.

Centrale begreber: produkttype, indholdstypen product, ordrer (HPOS), butikssider, session og kurv, Store API, REST API, Action Scheduler, transaktionelle mails, udvidelser

Et plugin, der gør dit websted til en butik

I WordPress-kurset (lektion 1.2 og 1.3) så du, hvordan en side bliver til: Webserveren giver forespørgslen videre til PHP, PHP indlæser WordPress, plugins og tema, henter data fra databasen og laver HTML ud af dem. WooCommerce går ind i den proces som et stort plugin. Det bringer fire ting med sig:

  1. Data: produkter, ordrer, kunder, momssatser, forsendelseszoner.
  2. Sider: butikken, kurven, kassen og Min konto.
  3. Processer: en kurv pr. besøgende, betalinger via en betalingsudbyder, mails, opdatering af lager, planlagte opgaver.
  4. Indgange for programmer: Store API og REST API.

Hvis du ved, hvor disse dele sidder, kan du senere finde en fejl meget hurtigere. Derfor ser vi nu på dem én ad gangen.

Produkter: en egen indholdstype

WordPress kender indholdstyper (post types): sider og indlæg er to af dem (WordPress-kurset lektion 4.2). WooCommerce tilføjer indholdstypen product. Et produkt ligger altså, ligesom en side, i tabellen med indlæg, med sine ekstra data (pris, varenummer/SKU, lager, vægt) som metadata. Kategorier og tags for produkter er egne taksonomier, adskilt fra dem på din blog.

Hvert produkt har en produkttype. I kernen er det simpel, grupperet, ekstern (et link til en anden butik) og variabel. Afkrydsningsfelterne virtuel (intet at sende) og downloadbar (en fil efter betaling) kan du slå til ved siden af. Et variabelt produkt har varianter, for eksempel en tekande i tre farver; hver variant er et selvstændigt element med egen pris og eget lager. Modul 3 går i dybden med det.

Ordrer: egne tabeller (HPOS)

Tidligere gemte WooCommerce også ordrer som indlæg. I travle butikker blev det langsomt, fordi ordrer og blogindlæg delte den samme store tabel. Derfor kom HPOS (High-Performance Order Storage): ordrer i egne tabeller, som wc_orders, wc_order_addresses og wc_orders_meta (med dit websteds tabelpræfiks foran). Siden WooCommerce 8.2 (oktober 2023) er HPOS slået til i alle nye installationer. En ældre butik bliver på den gamle lagring, indtil du selv skifter under WooCommerce > Indstillinger > Avanceret > Funktioner.

Hvorfor skal du vide det? Af tre grunde:

  • Backups: Ordrer ligger ikke i dine filer, men i databasen. En backup uden database er værdiløs for en shop (lektion 6.2).
  • Udvidelser: En ældre udvidelse, der stadig læser ordrer som indlæg, fungerer ikke ordentligt med HPOS. WooCommerce advarer ved pluginet, hvis det ikke er kompatibelt.
  • Gendannelse: Gendanner du en backup fra i går, forsvinder dagens ordrer. Det er langt værre for en shop end for en blog (lektion 6.2).

Kurven: forskellig for hver besøgende

En almindelig side er ens for alle besøgende. Det er kurven ikke. Så snart en besøgende lægger noget i kurven, starter WooCommerce en session: en cookie (wp_woocommerce_session_ efterfulgt af en kode) i browseren og en række i en sessionstabel i databasen. Sådan ved shoppen ved næste forespørgsel, hvilken kurv der hører til denne besøgende.

To konsekvenser, du møder igen senere:

  • Kurv, kasse og Min konto må aldrig havne i en sidecache, ellers ser den ene besøgende den andens kurv. WooCommerce sender selv headers med på de sider, der forbyder caching (lektion 6.4).
  • En shop, der starter en session for hver besøgende, også uden kurv, gør sidecachen for hele webstedet nytteløs. Det er en almindelig fejl i temaer og udvidelser.

Butikssiderne og blokkene

Ved installationen opretter WooCommerce fire sider: Webshop, Kurv, Kasse og Min konto. Siden version 8.3 (november 2023) bruger nye installationer blokke til kurv og kasse; ældre butikker bruger ofte stadig shortcodes. Begge dele virker. Forskellen er vigtig for udvidelser: En udvidelse, der tilføjer noget til kassen, skal understøtte den variant, du bruger. Lektion 2.2 viser, hvordan du tjekker det.

To indgange for programmer: Store API og REST API

WooCommerce har to programmerbare indgange, og forskellen er vigtig for sikkerheden:

Store APIREST API
Adresse/wp-json/wc/store/v1/.../wp-json/wc/v3/...
Til hvemButikken selv (blokkene i browseren) og andre butiksfronterIntegrationer: bogføring, lager, apps
Kræver nøgle?Nej, offentlig: alle kan læse produkter og priserJa, en API-nøgle med læse- eller skriverettigheder
Hvad indeholder denProdukter, priser, lagerstatus, den aktuelle besøgendes kurvOgså ordrer, kunder, rapporter

At Store API er offentlig, er ikke et læk: Det er præcis det, alle besøgende ser i butikken, bare i en form, som programmer kan læse. Prøv det med din egen shop: Åbn https://shop.example.com/wp-json/wc/store/v1/products i din browser (med din egen adresse), så ser du dine produkter som JSON. REST API skal derimod være lukket uden nøgle. Lektion 2.4 tjekker begge.

Bag kulisserne: Action Scheduler og mails

Meget arbejde i en shop sker ikke, mens kunden venter, men senere. Til det bruger WooCommerce Action Scheduler: en kø af planlagte opgaver, for eksempel at annullere en ubetalt ordre efter den indstillede tid, sende webhooks eller opdatere rapporter. Du ser køen under WooCommerce > Status > Skemalagte handlinger. Opgaverne kører på WP-Cron, som kun kører, når der er besøgende. I en stille shop kan arbejde derfor blive liggende; lektion 7.3 viser, hvordan en rigtig cron løser det.

Desuden sender WooCommerce transaktionelle mails: en mail til dig ved en ny ordre og mails til kunden ved modtagelse, afsendelse, refusion eller en ny konto. Kommer de ikke frem, tror kunden, at noget er galt. Lektion 6.1 sørger for leveringen.

I praksis: sådan ser det ud i WooCommerce

I WordPress-administrationen hos Theehuis Example dukker der efter installationen tre nye menuer op: WooCommerce (ordrer, kunder, indstillinger, status), Varer og Analytics (i nyere versioner nogle gange under WooCommerce). Under WooCommerce > Status finder du servermiljøet, databasetabellerne, de skemalagte handlinger og logfilerne. Den skærm får du ofte brug for. Trinene er de samme hos alle webhoster, fordi de ligger i selve WordPress.

Opsummering

  • WooCommerce bringer data, sider, processer og to programmerbare indgange med sig.
  • Produkter er en egen indholdstype; ordrer ligger i nye butikker i egne tabeller (HPOS, standard siden 8.2).
  • Kurven fungerer med en session pr. besøgende; derfor må kurv, kasse og Min konto ikke ligge i cachen.
  • Store API er offentlig og viser det, alle besøgende ser; REST API skal være lukket uden nøgle.
  • Planlagte opgaver kører via Action Scheduler og WP-Cron; mails er en del af bestillingsprocessen.

Quiz

1. Hvor ligger ordrerne i en ny WooCommerce-butik med HPOS?



2. Hvorfor starter WooCommerce en session, når en besøgende lægger noget i kurven?



3. En person åbner /wp-json/wc/store/v1/products i din shop uden at logge ind og ser dine produkter med priser. Hvad er det?



4. I en stille shop bliver en ubetalt ordre først annulleret timer senere i stedet for efter den indstillede tid. Hvad er den sandsynlige årsag?



Opgave

Opgave A1.2: Kører dette websted på WooCommerce? Indtast et domæne, vælg ja eller nej, og skriv, hvilket bevis du så (for eksempel "generator" eller "wc/store/v1"). Programmet henter forsiden, læser REST-indekset (/wp-json/, kun listen med namespaces) og henter /wp-json/wc/store/v1/products?per_page=1. Det genkender WooCommerce på en meta generator med WooCommerce, namespacet wc/store/v1 i REST-indekset, en fungerende Store API, filer fra /wp-content/plugins/woocommerce/ eller body-klassen woocommerce. Grøn: Dit valg er rigtigt, og dit bevis findes i headers, HTML, REST-indekset eller svaret fra Store API; du ser så også antallet af produkter og valutaen. Orange: Dit valg er rigtigt, men vi kan ikke finde dit bevis. Rød: Dit valg er forkert. Prøv det først på din egen shop og derefter på en shop, du kender. Der bliver ikke lagt noget i en kurv, og der bliver ikke sendt noget.

Opgave A1.2: Kører dette websted på WooCommerce?




Det, du udfylder, og hvad vi finder, gemmer vi ikke. Din browser husker dine svar, og om du har bestået opgaven. Er du logget ind, gemmer vi kun, at du (næsten) bestod opgaven, i Mine kurser; der kan du også slette det.

Læs videre

Hvor trin foregår i et kontrolpanel, gælder de for WebOké; hos andre udbydere fungerer det på samme måde.

Et øjeblik…

Opsæt dine domæner

Angiv for hvert domæne navneserverne, tilknytningen til din hosting, og hvem der bliver ejer.

Indlæser dine domæner…