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
