When the currency selection seems to be "lost" on page reload, the cause is usually a misconfiguration, or a glitch caused by a caching system. You can find more details about both cases below.
1. The "force currency selection by customer country" is enabled
Such option forces the currency based on customer's billing country, overriding anything selecting manually. The manual selection of a currency and the selection of currency by country are mutually exclusive, they cannot be used together. Here's an example showing such option enabled:
If the above option is set to Billing or Shipping conutry, simply change it to Disabled, then save the settings. That will fix the issue.
2. A caching system, or plugin, is serving incorrect content
Caching systems must be configured to support dynamic caching, in order to prevent them from interfering with the currency selection features. Plugins like WP Rocket or Comet Cache can support dynamic caching, while others, such as W3 Total Cache or Fastest Cache, do not. If you use a caching system, or plugin, that does not support dynamic caching, then you will have the following options:
- Replace the caching system with one that supports dynamic caching. This is the recommended solution, as it allows the site to work without workarounds.
- Use a workaround to prevent caching from serving the wrong content. Our Cache Handler plugin is designed to circumvent the limitations of static caching systems.
- Disable caching for shop pages (i.e. shop/* and product/*).
More information about dynamic caching
The following article explains how to implement dynamic caching: How to add dynamic caching to your site. It also explains how to install and configure our Cache Handler plugin, for caching systems that cannot support dynamic caching.