Decimaalscheidingsteken-fouten (WooCommerce)

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen

Het probleem

Dit betreft een casus uit okt. 2021: De prijzen van sommige artikelen zijn 100x te hoog. Ik heb flink met SQL huisgehouden in deze database, maar toch verklaart dat niet deze storing.

De twee bedragen van € 995 moeten beiden € 9.95 zijn
Op de productpagina speelt het probleem eveneens
Op de productpagina is het bedrag inderdaad 995. Duidelijk - zou je zeggen, niet?

Diagnose

  • In de database zijn alle prijzen op dezelfde manier weergegeven: Met een komma als scheidingsteken
  • Dit betreft een site die onlangs is geklooned van NL naar EN, waarbij het scheidingsteken in de backend (wp-admin » WooCommerce » Settings » General: Currency options) is aangepast van "," naar ".". Het blijkt dat het scheidingsteken in de database daarbij niet wordt aangepast.
  • Test: Op het moment dat ik in de backend het decimaalscheidingsteken terugverander in ",", zijn er geen problemen.

Oorzaak

Het komt door het aanpassen van het decimaalscheidingsteken van , naar .. WooCommerce probeert daar rekening mee te houden, maar dat lijkt niet altijd goed te gaan.

Oplossing

Aanpassing prijzen in database

Pas het decimaalscheidingsteken aan in prijzen in de database:

update
   wp_postmeta
set
   meta_value = replace(meta_value, ",", ".")
where
   meta_key="_price"
   or
   meta_key="_regular_price";

Check de site

Prijzen op de site zijn nog gewoon. Of vanwege caching, maar vermoedelijk (mede) doordat WooCommerce zelf rekening houdt met de situatie dat het decimaalscheidingsteken in de database afwijkt van de site.

Pas decimaalscheidingsteken aan

Pas decimaalscheidingsteken aan - wp-admin » WooCommerce » Settings » General: Currency options

Check de site

  • Gewoon: Kloppen de bedragen?
  • En na legen transients? (er was geen andere vorm van caching actief): wp transient delete --all?

Bronnen