This thread is resolved. Here is a description of the problem and solution.
Problem: The client reported that the multicurrency feature of WPML was not functioning correctly. Despite various settings and configurations, including deactivating all plugins and switching to a default theme, the currency switcher did not appear or function as expected. The client also noted that the currency did not change appropriately when tested under different conditions, such as in incognito mode or with different billing addresses.
Solution: We investigated the issue and found that the multicurrency feature was functioning correctly when cache was disabled. The problem arose due to the caching mechanism interfering with dynamic currency switching. We recommended: 1. Excluding WooCommerce-related pages (like cart, checkout, and account pages) from being cached. 2. Considering a caching solution that supports dynamic currency switching, or configuring the current caching setup to exclude certain pages. For more details on caching compatibility with WPML, visit https://wpml.org/plugin-functionality/caching/.
If this solution does not resolve your issue, or if it seems outdated or irrelevant to your specific setup, please open a new support ticket. We also highly recommend checking related known issues at https://wpml.org/known-issues/, verifying the version of the permanent fix, and confirming that you have installed the latest versions of themes and plugins. For further assistance, you can contact us directly through the WPML support forum.
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.
Multicurrency is not working. I put in a support ticket two days ago and spoke with someone who suggested two things. One to check with the host that Maxmind is not interfering with geolocation settings - they confirmed nothing is. The second is testing plugins - Im working on that, but with the theme switched to the default, I do not have access to the currency switcher to test.
I have tried deactivating all plugins and going into a default theme, however, the currency switcher does not show up, to make the test. I even added teh shortcode to a test page, and it doesn't appear. This needs to be looked at again by a WPML technician, otherwise, I will have to switch plugins.
Even with my theme and plugins back to being activated, I have selected to show the widgets on the product page for the currency switcher, and it does not show.
Also, when I had all the plugins deactivated, but still using my theme and Elementor (as the most basic stripped down version of my stie that I could to test the currency switcher), it still did not change the currency.
- Please backup the site files and database before providing us access.
- If you have a staging site where the problem can be reproduced, it is better to share access to the staging site.
I checked the behavior on your site and the multi-currency feature appears to be working correctly.
When visiting the website from different countries while not logged in, the currency changes properly based on the visitor’s location. However, for logged-in users, WooCommerce behaves differently. In that case, WooCommerce uses the billing country from the user account instead of the IP-based geolocation to determine the currency.
This is the default WooCommerce behavior and is not specific to WPML.
If you would like to override this behavior and always determine the currency based on IP instead of the billing country, you can use the hook suggested in the documentation to customize how WooCommerce detects the customer location.
Hmm, I am not so sure about this. I have seen that it overrides for the billing location, that's fine. But when I test in incognito, the currency still does not change even when I am not logged in, and even when I am chaning the billing address in the cart.
The site also defaults to CHF, rather than to EUR which is our base currency. I have seen this when I enter the site in incognito, a colleague of yours also saw it like this, and my product feed in Google Merchant Center is also seeing it as CHF and denying my listings because our prices are set in euros.
The plugin is seriously not working appropriately.. it was working fine before with my setup for IP addresses. I do not want to change my set up to solve a technical problem. I prefer to switch plugins, back to the previous one I was using.
That was not the case when I first checked it was working correctly for me. However, when I tested again now, I can see the same behavior you described. Because of that, it is possible that cache is affecting the result.
Do you perhaps have any caching enabled on your side (plugin, server cache, or Cloudflare)?
Also, could you please share new admin access, as the previous one is no longer working? This would allow me to take another look directly on the site.
Yes I will send new login link and clear the caches.. Unfortunately our site was hacked into since a couple of days, so we are solving this issue, and then I will reply here again with confirmation that the site is running properly for us to continue to look into the WPML issue.
I was able to identify the cause of the issue, and it is related to caching.
This behavior is expected when using cache plugins with multi-currency setups. Since pages are cached, the system cannot always detect the correct currency per user, which can result in incorrect currency display or switching issues.
To resolve this, I recommend:
Excluding WooCommerce-related pages (cart, checkout, account, etc.) from cache
Alternatively, using a caching solution that is fully compatible with dynamic currency switching and work in same way, excluding certain pages.
Hmm, okay I have also disabled Flyingpress, and cleared Cloudflare cache, to test in Incognito.
The currency still does not change upon request (selecting a different currency in the top bar).. that is important, in case the automatically selected currency from geolocation is wrong, or for reasons of customers being in a different location than their billing country, cusomters need an option to change the currency to the one they prefer.
I won't be changing my cache set up/plugin, as I've just purchased that license and paid to a speed developer for a set up that includes that plugin.
I also cannot just exclude certain woocommerce pages like the cart alone, without considering all the product pages, where people are primiarly arriving to the site and therefore experiencing if this is a shop that makes sense for them to buy from.. if they can't change the currency there, or it's showing the wrong one already, it leads to high bouce rates and skepticism.
It looks like WPML does not seem to have a solution to a fairly basic setup we have for our website, with very common cache solutions of Flyingpress and Cloudflare. Perhaps we will need to revert to a different plugin.
Thank you for the detailed explanation, I completely understand your concern here.
I tested the currency switching on my end with cache disabled, and it works correctly, including changing the currency from the top bar. This indicates that WPML multi currency itself is functioning as expected.
The behavior you’re experiencing is unfortunately typical when full-page caching is involved. Currency switching depends on dynamic data (cookies/session), and when a cached version of the page is served, it can prevent the switch from updating properly on the frontend.
I understand you don’t want to change your current setup, but in this case the limitation comes from how caching works rather than WPML itself.
To make this work reliably, one of the following is usually required:
- Excluding WooCommerce-related pages (shop, product, cart, checkout) from cache
- Using a cache plugin officially compatible with WPML multicurrency
If you’d like, I can record and share a video from my side showing the correct behavior without cache and working as expected.
From your side if you still have issue even with cache disabled, then it is probably something else, if you can share a short video of issue you are still having with cache disabled and your exact steps, I’d be happy to take another look or suggest further.