Shills Multi Currency Manager
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.
ExchangeRate-API.com * Purpose: Fetches real-time exchange rates when automatic rate updates are enabled. * Data sent: Only the base currency code (e.g., “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. * Service URL: https://www.exchangerate-api.com * Terms of Service: https://www.exchangerate-api.com/terms * Privacy Policy: https://www.exchangerate-api.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. * Service URL: https://openexchangerates.org * Terms of Service: https://openexchangerates.org/terms * Privacy Policy: https://openexchangerates.org/privacy
ipapi.co * Purpose: GeoIP detection to automatically suggest the visitor’s local currency on their first visit. * Data sent: The visitor’s IP address is transmitted as part of the HTTP request to ipapi.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. * Service URL: https://ipapi.co * Terms of Service: https://ipapi.co/terms/ * Privacy Policy: https://ipapi.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 arrayshmcm_exchange_rates– Filter exchange rates before storageshmcm_price_format– Filter price formattingshmcm_api_providers– Filter available API providersshmcm_geo_country_currency_map– Filter GeoIP country-currency mapping
Action Reference
shmcm_currency_switched– Fires when currency is switchedshmcm_rates_updated– Fires when exchange rates are updatedshmcm_language_currency_synced– Fires when language-currency sync occursshmcm_activated– Fires on plugin activationshmcm_deactivated– Fires on plugin deactivationshmcm_components_loaded– Fires after all components are loaded
REST API Endpoints
All endpoints are under /wp-json/shmcm/v1/:
GET /settings– Get currency switcher settingsPOST /switch– Switch currency (sets cookie)POST /update-rates– Update exchange rates from APIGET /theme-color– Get current theme colorGET /lang-map– Get language-currency mappingPOST /sync-lang– Sync language with currencyGET /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) orbuttonstheme– Theme mode:auto(default),light,dark, orcustom
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 * ExchangeRate-API.com and Open Exchange Rates for exchange rate data * ipapi.co for GeoIP detection
