01Je server bepaalt de prijs, nooit de browser
De configurator toont een totaal terwijl de klant kiest, maar het getal waarmee de bestelling wordt geschreven, wordt op de server opnieuw berekend uit alleen de selectie. Een door de browser verstuurd totaal wordt botweg genegeerd. Geld wordt in hele kleinste eenheden bewaard, zodat een lange bestelling nooit een cent afwijkt tussen factuur en order.
02Geüploade foto’s zijn geen bijlagen in de mediabibliotheek
Ze gaan naar een map waarvan de naam niet te raden is, tegelijk op vier manieren beschermd: een .htaccess-regel, een web.config voor IIS, een index.php en bestandsrechten die niets anders dan de site laten lezen. Een bestand wordt aangenomen om wat zijn bytes zijn, niet om wat zijn naam beweert: een uitvoerbaar bestand hernoemd naar .jpg wordt bij de deur geweigerd. Ze krijgen nooit een publieke URL.
03Eén uitgang, en die kijkt wie er klopt
Elke foto en elke proef gaat door één poort. Je team komt erdoor op zijn WooCommerce-bestelrecht; de klant op een ondertekende link die tegen precies die bestelling wordt gecontroleerd en geen andere. Een link die voor één bestelling is gemaakt, kan het bestand van een andere niet openen, en een gemanipuleerde link opent niets.
04De klant keurt goed zonder account aan te maken
De goedkeuringspagina opent rechtstreeks vanuit de e-mail: geen inlog, geen wachtwoord, geen winkelwagen. Iemand vragen zich te registreren voordat hij naar zijn eigen proef mag kijken, is de zekerste manier om de goedkeuring te verliezen. De link draagt zijn eigen bevoegdheid, is ondertekend en verloopt; de pagina wordt nooit gecachet, zodat de proef van de ene klant niet aan een ander geserveerd kan worden.
05Correcties tot het ja is, daarna productie en geen wijzigingen meer
Vóór de goedkeuring kan de klant zo vaak om een correctie vragen als nodig is, en elk verzoek wordt bij de bestelling vastgelegd. Na de goedkeuring verdwijnt het correctieformulier — en de server weigert het verzoek ook, niet alleen het scherm. Volgens de Turkse regels voor verkoop op afstand geeft een gepersonaliseerd artikel geen herroepingsrecht zodra het gemaakt is, dus het moment waarop de klant daarmee instemt wordt samen met de goedkeuring vastgelegd.
06Vier bestelstatussen die alleen vooruit gaan
Modelleren, wacht op goedkeuring, in druk, klaar. Wat op wat mag volgen staat als lijst van toegestane overgangen geschreven, niet van verboden: een stap waar niemand aan gedacht heeft wordt standaard geweigerd in plaats van stilzwijgend toegestaan. De statussen zijn echte WooCommerce-bestelstatussen, dus ze verschijnen in de besteloverzicht, in rapporten en in je bestaande filters.
07Een wachtrij die zegt wat te laat is, niet alleen wat open staat
Het werkplaatsscherm sorteert openstaande bestellingen op hoe lang ze al wachten en markeert de bestellingen die de beloofde tijd overschreden hebben in rood: normaal vierentwintig uur, zes bij een spoedorder. De medewerker uploadt de proef vanaf hetzelfde scherm en de klant krijgt in dezelfde handeling de e-mail; er is geen tweede plek waar je aan moet denken te klikken.
08Vier e-mails, verstuurd door WooCommerce zelf
Bestelling ontvangen, proef klaar, goedkeuring vastgelegd, verzonden. Ze gaan door de e-mailsjabloon van je eigen winkel, dus ze lijken op de rest van je post en niet op iets dat erop geplakt is. De goedkeuringslink staat twee keer in het bericht, als knop en als platte tekst, omdat sommige mailprogramma’s de knop niet weergeven.
09De foto’s blijven niet voor altijd
Een dagelijkse taak verwijdert de uploads en proeven van afgeronde bestellingen na een bewaartermijn die jij instelt: standaard zestig dagen. De bestelling, het bedrag en de goedkeuringsregistratie blijven; de foto van de klant niet. De foto van een kind onbeperkt op een winkelserver bewaren is een aansprakelijkheid, geen functie.
010Het vecht niet met je cache
De configurator en de goedkeuringspagina zetten allebei paginacaching voor zichzelf uit, in de taal die LiteSpeed, WP Rocket en W3 Total Cache alle drie verstaan, en sturen daarnaast no-store-headers. Een gecachete configurator verstuurt met een verlopen token en faalt geruisloos; een gecachete goedkeuringspagina toont de proef van de ene klant aan de volgende bezoeker. Hier kan geen van beide gebeuren.