Symptoms:
The currency switcher is not appearing and is probably not registered by WPML. I have checked multiple times every step in the documentation, and the multicurrency setting should be okay.
Welcome to WPML support. Would you please test by adding a normal currency switcher (not custom one) and see if the currency switcher works at all?
Also, the switcher usually works when there is a product. So please test it on a single product page.
Custom development is something that we do not give active technical support. We can not debug your code to see what might be the problem cause, but we will do our best to give you pointers.
I understand, but you have in a documentation possibility to use custom templates. Rather than just modifying CSS of pre-defined switcher I would like to add some classes there.
If you only want to add extra HTML classes (or a wrapper) and don’t need a fully custom template folder, you can keep WPML’s built-in switcher and wrap it (or pass classes via the switcher_style parameter). No template files are required.
/**
* Place this where you want the switcher to appear
* – e.g. in a template part or a shortcode callback.
*/
echo '<div class="currency-switcher my-extra-class">';
do_action(
'wcml_currency_switcher',
[
'format' => '%code%', // shows only the code; change to %name%, etc.
'switcher_style' => 'wcml-horizontal-list', // any of WPML's built-ins
]
);
echo '</div>';
Everything inside the wrapper keeps WPML’s JS behaviour because the output still contains the mandatory wcml_currency_switcher class that WPML prints automatically. You’re free to target .my-extra-class (or any additional class you add) in your CSS.