Hi,
I’m running XStore with the FOX Currency Switcher plugin (free version) to display converted prices (base currency USD, displayed in ARS) via JavaScript on the frontend.
Setup:
– XStore theme (child theme active), latest version
– WooCommerce
– FOX Currency Switcher (free), with “I am using cache plugin on my site” and “Prices preloader” both enabled — this makes FOX recalculate prices via AJAX after the page/grid is rendered
Issue:
When a shop or category page loads normally (full page load / F5), FOX correctly recalculates all prices and the preloader spinner disappears as expected.
However, when a customer applies an attribute filter (e.g. color) using XStore’s built-in AJAX filter (checkbox + apply button, without a full page reload — the URL updates via what looks like pushState, e.g. /shop/?filter_color=blue), the product grid is redrawn by XStore’s own AJAX mechanism, but FOX’s price recalculation does not run correctly on the new grid content. The price elements are left permanently stuck with the woocs_preloader_ajax class and never resolve — the price never appears unless the customer manually refreshes the page (F5).
What I’ve already ruled out:
– Not a server-side caching issue (Breeze/Varnish/Object Cache) — purging all caches does not fix it
– Not a JS error blocking execution — there is an unrelated Contact Form 7 translation console error, but it’s present on both successful and failed loads, so it’s not the cause
– Confirmed via DevTools Network tab that FOX doesn’t make a server AJAX request for this — it’s a pure client-side JS recalculation
– Confirmed the “WOOCS custom prices recalculated” console message does fire multiple times after the filter is applied, but the price element in the DOM is not updated
My question:
What JavaScript event does XStore trigger once it finishes redrawing the product grid after an AJAX filter is applied (attribute filters, price filters, etc.)? I’d like to know if it’s a custom XStore event, or if it’s supposed to trigger a standard WooCommerce event like updated_wc_div. FOX likely listens for a specific event that XStore’s filter mechanism isn’t firing, which is why the recalculation logic runs but never touches the newly-rendered price elements.
Any guidance on how XStore’s AJAX filter refresh integrates with third-party price-display plugins would be very helpful.
Thanks!