Compatibility
GeoBlock includes a dedicated compatibility layer for popular plugins. Integrations are loaded automatically only when the relevant plugin is detected.
Compatibility Matrix
| Plugin | Supported | Notes |
|---|---|---|
| WPML | ✅ Yes | Rules shared across all languages |
| Price Based on Country | ✅ Yes | Price filter priority resolved |
| WooCommerce Product Bundles | ✅ Yes | Apply rules to bundle parent |
| WooCommerce Subscriptions | ✅ Yes | All subscription types supported |
| WP Rocket | ✅ Yes | Product pages excluded from cache |
| Speed Optimizer by SiteGround | ✅ Yes | Product pages excluded from cache |
| High-Performance Order Storage (HPOS) | ✅ Yes | Declared compatible |
WPML
When WPML is active, each product exists as multiple translated copies with different post IDs. GeoBlock resolves any translated product ID back to the original (default language) product before reading its restriction rules. This means you only need to set rules on the original product - all translations respect the same country rules automatically.
Price Based on Country for WooCommerce
This plugin modifies the woocommerce_get_price_html filter (priority 10) to show country-specific prices. In GeoBlock's Message mode, the price is replaced by the restriction notice. GeoBlock runs an additional filter at priority 5 to short-circuit Price Based on Country on restricted products, preventing the price from being modified before it is hidden.
WooCommerce Product Bundles
GeoBlock applies restrictions to the bundle product itself. Bundled child items are not checked individually - restricting a child would break the bundle silently without a clear user-facing message. Apply rules to the bundle parent product instead.
The woocommerce_bundle_is_purchasable filter is hooked at priority 15 to ensure GeoBlock runs after WooCommerce Bundles' own purchasability logic.
WooCommerce Subscriptions
subscription and variable-subscription product types are supported through the woocommerce_subscription_is_purchasable and woocommerce_variable_subscription_is_purchasable filters. Restricted subscription products are blocked from purchase in the same way as standard products.
WP Rocket
WP Rocket caches full HTML pages. If a cached page were served to a restricted visitor, they would see the unrestricted version. GeoBlock prevents this by setting the DONOTCACHEPAGE constant on all single product pages.
Use Geolocate (with page caching support) in WooCommerce geolocation settings. This mode uses an AJAX request for detection and is inherently safe with full-page caching.
Speed Optimizer by SiteGround
GeoBlock sets the SGCACHENOCACHE constant on product pages and hooks into the sgo_bypass_cache filter to ensure SiteGround Speed Optimizer's server-level cache is bypassed for single product pages.