Skip to main content

ArtinTech Solution

Where WooCommerce Checkout Validation Actually Takes Effect

En checkout har brug for telefonnumre i én ensartet form. Kunderne skriver dem med landekoder, mellemrum, bindestreger og nogle gange et plus foran. Vi tilføjede et normaliseringstrin ved siden af den eksisterende validering, testede det og så det gøre absolut ingenting.

Selve valideringen virkede korrekt: forkert formaterede numre blev afvist med en klar besked. Men hver ordre, der gik igennem, gemte stadig præcis det, kunden havde skrevet, urørt.

Hooket kører på en kopi

WooCommerce samler de indsendte checkout-data i et array, før valideringshooket kører, og bygger derefter ordren ud fra sin egen kopi af de data et par linjer senere. Alt, der skrives i det array, valideringshooket får, smides væk. Hooket findes, så du kan afvise en indsendelse, ikke så du kan omskrive den.

Det er en nem fejl at begå og en svær fejl at opdage, fordi intet fejler. Koden kører, funktionen returnerer, og værdierne ser rigtige ud inde i hooket. Kun den gemte ordre er uenig.

Afvis ét sted, ryd op et andet

Løsningen var at dele de to opgaver. Valideringen blev, hvor den var, for det er reelt det eneste sted, der kan stoppe en indsendelse. Normaliseringen flyttede til det punkt, hvor WooCommerce afleverer det ordreobjekt, den er ved at gemme: et rigtigt objekt, hvis settere faktisk gemmer.

Og tjekket i browseren er ikke reglen

Der er også et JavaScript-tjek på samme felt, og det bliver, fordi øjeblikkelig feedback under indtastning er værd at have. Men det er ikke reglen. Slået JavaScript fra, en usædvanlig browser eller en direkte afsendelse af formularen omgår det alle sammen. Tjekket på serveren er reglen; tjekket i browseren er en service.

Det vigtigste

  • Et hook, der kører på det rigtige tidspunkt, skriver ikke nødvendigvis til det rigtige objekt.
  • Valideringshooks findes for at blokere indsendelser; ændr i stedet data på det objekt, der gemmes.
  • Fejl, der i stilhed ikke gør noget, er den dyre slags; intet fejler, så intet vækker opmærksomhed.
  • Kontrollér en datarettelse ved at læse den gemte post, ikke ved at kigge på variabler inde i hooket.

Læs også: validering af mobilnumre i checkout, en checkout uden e-mailadresser.

Støder du på en lignende begrænsning i din egen WooCommerce- eller WordPress-butik? Lad os tale — ArtinTech Solution bygger netop den slags skræddersyede værktøjer til webshops.

Del denne artikel

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *