WordPress plugin intelligence profile

Shills Multi Currency Manager

Lightweight multi-currency manager for WooCommerce with real-time rates, WPML/Polylang support, GeoIP detection, and frontend switcher.

WP PlugIndex snapshot

Current directory snapshot

Tested up to WordPress 7.0
Current version1.0.0
WordPress coverageTested up to WordPress 7.0
Minimum stackWP 6.0 · PHP 7.4
Directory statusactive
Last directory update8 Jul 20263mo ago
Active installationsNewAdoption metric — not a quality score
WordPress.org ratingNo WordPress.org ratings yet
Official packageDirect from WordPress.org

Repository metrics are context, not quality scores. Active installations measure adoption and can strongly reflect a plugin’s age and historical popularity. Ratings, recent updates and “Tested up to” metadata also do not guarantee modern code, error-free operation, security, feature completeness or suitability for a particular site. Why active installs don’t tell the whole story →

WP PlugIndex currently records Shills Multi Currency Manager version 1.0.0 as active, updated 3mo ago and tested up to WordPress 7.0.

Overview

About this plugin

Shills Multi Currency Manager is a powerful yet lightweight currency switcher plugin for WordPress that allows your visitors to switch between multiple currencies seamlessly. Perfect for e-commerce stores, international businesses, and multilingual websites.

Key Features:

  • Multi-Currency Management – Add unlimited currencies with custom symbols, positions, and exchange rates
  • Real-Time Exchange Rates – Automatic rate updates from ExchangeRate-API.com or Open Exchange Rates
  • WooCommerce Integration – Full compatibility with WooCommerce product prices, cart, and checkout
  • WPML & Polylang Support – Automatic currency switching based on language selection
  • Language-Currency Mapping – Map specific currencies to languages (e.g., English → USD, Chinese → CNY)
  • GeoIP Detection – Auto-detect visitor location and set appropriate currency
  • Multiple Display Styles – Choose between dropdown or button display formats
  • REST API – Complete REST API for currency operations and frontend integration
  • Widget & Shortcode – Easy implementation via widget or [shmcm_switcher] shortcode
  • Theme Integration – Auto-detect theme colors or set custom colors
  • User Choice Persistence – Remember visitor currency selection for 30 days
  • Cache Compatible – Works with WP Rocket, W3 Total Cache, and other caching plugins
  • Modern JavaScript – Built with Webpack and modern ES6+ JavaScript

Currency Features:

  • Custom currency symbols and positions (left, right, left_space, right_space)
  • Configurable decimal places per currency
  • Manual or automatic exchange rate updates
  • Base currency support with rate normalization
  • Currency validation and error handling

WooCommerce Features:

  • Automatic price conversion on product pages
  • Cart and checkout price formatting
  • Order currency metadata storage
  • Currency display in admin order details
  • AJAX fragment support for dynamic updates

Multilingual Features:

  • Automatic currency sync when switching languages
  • Respect user manual currency selection
  • Configurable language-currency mappings
  • Compatible with WPML and Polylang language switchers

Arbitrary section

Development

This plugin is built with modern development practices:

  • PHP 7.4+ with strict types
  • WordPress Coding Standards
  • Webpack for asset building
  • ES6+ JavaScript
  • SCSS for styling
  • REST API architecture
  • Comprehensive error handling and logging

External Services

This plugin may connect to the following third-party services. All are optional.

com

* Purpose: Fetches real-time exchange rates when automatic rate updates are enabled.

, “USD”) as part of the request URL. No API key or personal data is transmitted.

* When: Only when the admin manually triggers a rate update or when the scheduled auto-update cron runs.

com

com/terms

com/privacy

Open Exchange Rates

* Purpose: Fetches real-time exchange rates as an alternative provider when automatic rate updates are enabled.

* Data sent: The API key (configured by the site admin) and base currency code as URL parameters. No user data is transmitted.

* When: Only when the admin manually triggers a rate update or when the scheduled auto-update cron runs.

org

org/terms

org/privacy

co

* Purpose: GeoIP detection to automatically suggest the visitor’s local currency on their first visit.

co. No API key, personal information, or cookies are sent.

* When: Only when a visitor first loads the site and no currency preference cookie is set. Once set, no further GeoIP requests are made.

co

co/terms/

co/privacy/

All external services are optional. Select “None – Use Manual Rates” in the General Settings tab to disable all exchange rate API calls. Rate updates only occur on admin-initiated actions or scheduled WordPress cron events; no exchange rate API requests are made during regular frontend visits.

GeoIP detection can be disabled in the Multilingual Settings.

Filter Reference

  • shmcm_currencies – Filter the currencies array
  • shmcm_exchange_rates – Filter exchange rates before storage
  • shmcm_price_format – Filter price formatting
  • shmcm_api_providers – Filter available API providers
  • shmcm_geo_country_currency_map – Filter GeoIP country-currency mapping

Action Reference

  • shmcm_currency_switched – Fires when currency is switched
  • shmcm_rates_updated – Fires when exchange rates are updated
  • shmcm_language_currency_synced – Fires when language-currency sync occurs
  • shmcm_activated – Fires on plugin activation
  • shmcm_deactivated – Fires on plugin deactivation
  • shmcm_components_loaded – Fires after all components are loaded

REST API Endpoints

All endpoints are under /wp-json/shmcm/v1/:

  • GET /settings – Get currency switcher settings
  • POST /switch – Switch currency (sets cookie)
  • POST /update-rates – Update exchange rates from API
  • GET /theme-color – Get current theme color
  • GET /lang-map – Get language-currency mapping
  • POST /sync-lang – Sync language with currency
  • GET /currencies – Get all currencies (admin)
  • POST /currencies – Add new currency (admin)
  • GET /currency/{code} – Get single currency (admin)
  • POST /currency/{code} – Update currency (admin)
  • DELETE /currency/{code} – Delete currency (admin)

Shortcode Parameters

[shmcm_switcher]

  • display – Display style: dropdown (default) or buttons
  • theme – Theme mode: auto (default), light, dark, or custom

Example: [shmcm_switcher display="buttons" theme="dark"]

Requirements

  • PHP 7.4 or higher
  • WordPress 6.0 or higher
  • WooCommerce 6.0 or higher (optional, for e-commerce features)
  • WPML or Polylang (optional, for multilingual features)

Credits

Built with love by Shawn Hills

Special thanks to:

* The WordPress community

* Contributors and testers

com and Open Exchange Rates for exchange rate data

co for GeoIP detection

WordPress.org metadata

Plugin tags

Topics listed for this plugin in the WordPress.org directory.

  • currency switcher
  • exchange rates
  • multi currency
  • multilingual
  • woocommerce
Compatibility & maintenance

Compatibility & maintenance

Tested up to WordPress 7.0

Not yet marked as tested with WordPress 7.1. WordPress.org currently lists Tested up to 7.0.

Current WordPress releaseWordPress 7.1
WordPress.org Tested up to7.0
Minimum requirementsWordPress 6.0 · PHP 7.4
Update activity8 Jul 20263mo ago

“Tested up to” is directory metadata supplied by the plugin author. WP PlugIndex does not turn an older declaration into a claim that the plugin is incompatible.

Changes recorded by WP PlugIndex

Recent tracked changes

No tracked version or compatibility changes have been recorded by WP PlugIndex yet.

Tracking & source

WP PlugIndex tracks public WordPress.org directory metadata and records selected version, compatibility and availability changes as they are detected.

Plugin watchlist

Watch this plugin

Sign in to your WP PlugIndex account or create a free account. Free accounts can watch up to 5 plugins and see what changed.

Watch limit

Watchlist limit reached

You have reached your current active watch limit.