Skip to content Skip to sidebar

This is the technical support forum for WPML - the multilingual WordPress plugin.

Everyone can read, but only WPML clients can post here. WPML team is replying on the forum 6 days per week, 22 hours per day.

This topic contains 1 voice and has 0 replies.

>
Author Posts
April 10, 2026 at 1:21 pm #17962270

mateuszH-2

Hello,

I am writing to report a critical performance issue that seems to have started after upgrading WPML Multilingual & Multicurrency for WooCommerce to version 5.5.5, which I have traced to a change in how WCML injects multi-currency price cache HTML into price strings.

## The Problem
My wp_woocommerce_sessions database table grew from ~1-2GB to over 4GB within a short period, with ~65,000 entries. Each session entry is approximately 115KB in size, whereas previously sessions were a few KB each.

## Root Cause Identified
After analyzing the raw session data in the database, I found that each session contains a key called fs_free_shipping_notice (written by the Flexible Shipping plugin). Inside this key, WCML is injecting a wmc-price-cache-list HTML blob containing pre-rendered price strings for every single supported currency (~100 currencies), for every price threshold value.

For a single $100.00 free shipping threshold, WCML is generating and storing a full HTML price string for all ~100 currencies (USD, EUR, CHF, GBP, PLN, AED, KRW, JPY, CNY, AUD, CAD, NOK, SEK, DKK, CZK, AFN, ALL, AMD... and so on). This alone accounts for ~115KB per session entry.

## This Is a Recent Regression
This behavior started approximately after upgrading WPML Multilingual & Multicurrency for WooCommerce - it was NOT happening before. Session sizes were normal prior to this.

## Environment
- WordPress: 6.9.4
- WooCommerce: 10.6.2 (HPOS enabled)
- WPML Multilingual & Multicurrency for WooCommerce: 5.5.5
- Flexible Shipping: 6.5.7
- PHP: 8.1.34

## Evidence
Here is a sample of the bloated data structure stored in each session. The wmc_price_cache attribute inside the price HTML contains pre-rendered strings for every currency:

<span data-wmc_price_cache="{"USD":...,"EUR":...,"CHF":...[~100 more currencies]}">

I have also contacted Flexible Shipping support, but since the oversized data originates from WCML's currency cache injection, I believe the fix needs to come from the WCML side.

Thank you,