{"id":292628,"date":"2026-04-15T04:38:29","date_gmt":"2026-04-15T04:38:29","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/geoguard-country-restrictions-for-woocommerce\/"},"modified":"2026-06-29T13:37:41","modified_gmt":"2026-06-29T13:37:41","slug":"windcodex-geoblock","status":"publish","type":"plugin","link":"https:\/\/es-uy.wordpress.org\/plugins\/windcodex-geoblock\/","author":23476832,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.0","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"WindCodex GeoBlock","header_author":"WindCodex","header_description":"Country Restrictions for WooCommerce - Restrict WooCommerce products by country using geolocation. Hide products, block purchases, or show a custom message per product. No API key required.","assets_banners_color":"9b89f2","last_updated":"2026-06-29 13:37:41","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.windcodex.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":202,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"windcodex","date":"2026-04-20 05:28:54"},"1.0.1":{"tag":"1.0.1","author":"windcodex","date":"2026-06-29 13:37:41"}},"upgrade_notice":{"1.0.1":"<p>Adds inline Pro upsell banner, review request notice, and help button in the settings header. No database changes \u2014 safe to update.<\/p>","1.0.0":"<p>Initial release \u2014 no upgrade steps required.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3506595,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3506595,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3510420,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3510420,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3506582,"resolution":"1","location":"assets","locale":"","width":1200,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3506582,"resolution":"2","location":"assets","locale":"","width":1200,"height":565},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3506582,"resolution":"3","location":"assets","locale":"","width":1200,"height":639}},"screenshots":{"1":"<strong>Settings Page - General Tab<\/strong> \u2014 Choose restriction mode (Hide, Catalog Only, or Message), configure redirect URL, and write your custom restriction message.","2":"<strong>Settings Page - Advanced Tab<\/strong> \u2014 Force Geolocation and Debug Mode toggles.","3":"<strong>Product Meta Box<\/strong> \u2014 Per-product Include\/Exclude country rule with searchable country selector and live rule summary preview."}},"plugin_section":[],"plugin_tags":[1497,19870,242487,4124,286],"plugin_category":[45,49],"plugin_contributors":[260242],"plugin_business_model":[],"class_list":["post-292628","plugin","type-plugin","status-publish","hentry","plugin_tags-block-country","plugin_tags-country-restriction","plugin_tags-geo-blocking","plugin_tags-geolocation","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-maps-and-location","plugin_contributors-windcodex","plugin_committers-windcodex"],"banners":{"banner":"https:\/\/ps.w.org\/windcodex-geoblock\/assets\/banner-772x250.png?rev=3510420","banner_2x":"https:\/\/ps.w.org\/windcodex-geoblock\/assets\/banner-1544x500.png?rev=3510420","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/windcodex-geoblock\/assets\/icon-128x128.png?rev=3506595","icon_2x":"https:\/\/ps.w.org\/windcodex-geoblock\/assets\/icon-256x256.png?rev=3506595","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/windcodex-geoblock\/assets\/screenshot-1.png?rev=3506582","caption":"<strong>Settings Page - General Tab<\/strong> \u2014 Choose restriction mode (Hide, Catalog Only, or Message), configure redirect URL, and write your custom restriction message."},{"src":"https:\/\/ps.w.org\/windcodex-geoblock\/assets\/screenshot-2.png?rev=3506582","caption":"<strong>Settings Page - Advanced Tab<\/strong> \u2014 Force Geolocation and Debug Mode toggles."},{"src":"https:\/\/ps.w.org\/windcodex-geoblock\/assets\/screenshot-3.png?rev=3506582","caption":"<strong>Product Meta Box<\/strong> \u2014 Per-product Include\/Exclude country rule with searchable country selector and live rule summary preview."}],"raw_content":"<!--section=description-->\n<p><strong>WindCodex GeoBlock<\/strong> lets you restrict WooCommerce products by country using WooCommerce's built-in geolocation \u2014 no API key, no third-party service, no code required.<\/p>\n\n<p>Whether you need to comply with local laws, honour export restrictions, manage licensing territories, or simply limit shipping to countries you serve \u2014 GeoBlock gives you per-product country control in minutes.<\/p>\n\n<h4>Why Store Owners Choose GeoBlock<\/h4>\n\n<ul>\n<li><strong>Stop failed deliveries<\/strong> \u2014 Block customers from ordering products you cannot ship to their location.<\/li>\n<li><strong>Stay legally compliant<\/strong> \u2014 Restrict alcohol, supplements, age-restricted, or regulated products by region.<\/li>\n<li><strong>Honour licensing agreements<\/strong> \u2014 Limit digital downloads and licensed content to permitted territories.<\/li>\n<li><strong>Build country-specific catalogs<\/strong> \u2014 Show a tailored product range to each market automatically.<\/li>\n<li><strong>Reduce chargebacks<\/strong> \u2014 Prevent orders you would only have to cancel and refund anyway.<\/li>\n<\/ul>\n\n<h4>3 Restriction Modes<\/h4>\n\n<p><strong>Hide Completely<\/strong>\nProduct disappears from shop pages, search results, and category listings. The direct product URL returns a 404 page. Optionally redirect restricted visitors to any custom URL instead.<\/p>\n\n<p><strong>Hide from Catalog \u2013 Allow Direct URL<\/strong>\nProduct is hidden from the shop and search but remains accessible via its direct link. Useful for distributors or B2B partners in restricted regions. A single toggle lets direct-URL visitors purchase too.<\/p>\n\n<p><strong>Show Restriction Message<\/strong>\nProduct stays visible in the catalog. On the product page, the Add to Cart button and price are replaced with your custom HTML message \u2014 ideal for explaining regional availability without hiding the product entirely.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li><strong>Per-product country rules<\/strong> \u2014 Set include or exclude rules on any product from the product edit screen, with a searchable country selector and live rule summary.<\/li>\n<li><strong>Include or Exclude mode<\/strong> \u2014 Whitelist specific countries (only they can buy) or blacklist countries (everyone except them can buy).<\/li>\n<li><strong>Custom restriction message<\/strong> \u2014 Write your own HTML message with links, bold text, or any WordPress-allowed markup.<\/li>\n<li><strong>Configurable message position<\/strong> \u2014 Place the restriction notice above the title, below the title, after the description, or before product meta.<\/li>\n<li><strong>Redirect on restriction<\/strong> \u2014 In Hide mode, send restricted visitors to any URL instead of a 404 page.<\/li>\n<li><strong>Cart &amp; checkout protection<\/strong> \u2014 Restricted products added to cart before a rule was applied are automatically removed, with a clear customer notice.<\/li>\n<li><strong>Server-side add-to-cart validation<\/strong> \u2014 Blocks direct POST, REST API, and AJAX add-to-cart attempts. Not just client-side.<\/li>\n<li><strong>Smart country detection (6 layers)<\/strong> \u2014 Shipping address \u2192 billing address \u2192 WC session \u2192 transient cache \u2192 MaxMind GeoLite2 \u2192 store base country. No manual input needed.<\/li>\n<li><strong>Cloudflare IP support<\/strong> \u2014 Reads <code>CF-Connecting-IP<\/code> automatically for sites behind Cloudflare.<\/li>\n<li><strong>Force Geolocation option<\/strong> \u2014 Ignore saved addresses and always detect country from current IP.<\/li>\n<li><strong>Session &amp; transient caching<\/strong> \u2014 Country detection results cached per session. Zero repeated geolocation lookups.<\/li>\n<li><strong>Admin debug toolbar<\/strong> \u2014 Shows detected country, IP address, detection source, and a settings link. Visible to admins only.<\/li>\n<li><strong>Shortcode support<\/strong> \u2014 <code>[geoblock_product_message]<\/code> renders the restriction message in any page builder, custom template, Elementor, or Divi.<\/li>\n<li><strong>HPOS compatible<\/strong> \u2014 Fully supports WooCommerce High-Performance Order Storage.<\/li>\n<li><strong>Translation ready<\/strong> \u2014 Complete <code>.pot<\/code> file included. Compatible with Loco Translate and WPML String Translation.<\/li>\n<\/ul>\n\n<h4>Plugin Compatibility<\/h4>\n\n<p>Built-in compatibility for 6 popular plugins \u2014 no configuration needed:<\/p>\n\n<ul>\n<li><strong>Price Based on Country for WooCommerce<\/strong> \u2014 Restriction message takes priority over country-based pricing on restricted products.<\/li>\n<li><strong>WPML<\/strong> \u2014 Rules set on the original-language product automatically apply to all translated copies. No duplicate rules per language.<\/li>\n<li><strong>WooCommerce Product Bundles<\/strong> \u2014 Restricting the bundle parent blocks the entire bundle from purchase.<\/li>\n<li><strong>WooCommerce Subscriptions<\/strong> \u2014 Both <code>subscription<\/code> and <code>variable-subscription<\/code> product types fully supported.<\/li>\n<li><strong>WP Rocket<\/strong> \u2014 Product pages automatically excluded from page cache so every visitor gets the correct restricted or unrestricted version.<\/li>\n<li><strong>Speed Optimizer by SiteGround<\/strong> \u2014 Product pages bypass SiteGround's dynamic cache via <code>SGCACHENOCACHE<\/code> and <code>sgo_bypass_cache<\/code>.<\/li>\n<\/ul>\n\n<h4>Use Cases<\/h4>\n\n<ul>\n<li>Block alcohol or age-restricted products from countries where they are prohibited by law<\/li>\n<li>Restrict physical goods to only the countries you ship to<\/li>\n<li>Limit digital downloads to licensed territories<\/li>\n<li>Hide out-of-stock regional variants from international markets<\/li>\n<li>Display a \"contact us to order in your region\" message instead of hiding the product<\/li>\n<li>Build exclusive country-specific product catalogs for different markets<\/li>\n<\/ul>\n\n<h4>Shortcode<\/h4>\n\n<p>Display the restriction message anywhere on your site using:<\/p>\n\n<pre><code>[geoblock_product_message]\n<\/code><\/pre>\n\n<p><strong>Attributes:<\/strong>\n* <code>id<\/code> \u2014 Product ID to check. Defaults to the current product in the loop.\n* <code>class<\/code> \u2014 Extra CSS class(es) added to the message wrapper div.<\/p>\n\n<p><strong>Examples:<\/strong>\n    [geoblock_product_message id=123]\n    [geoblock_product_message id=123 class=\"my-notice highlight\"]<\/p>\n\n<h4>How It Works<\/h4>\n\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Go to <strong>WooCommerce &gt; GeoBlock Restrictions<\/strong> and choose a restriction mode.<\/li>\n<li>Open any product and find the <strong>GeoBlock - Country Restrictions<\/strong> meta box.<\/li>\n<li>Select Include or Exclude, choose your countries, and save.<\/li>\n<li>GeoBlock automatically detects each visitor's country and applies your rules in real time.<\/li>\n<\/ol>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 5.8 or higher<\/li>\n<li>WooCommerce 7.0 or higher<\/li>\n<li>PHP 7.4 or higher<\/li>\n<li>WooCommerce Geolocation must be enabled: <strong>WooCommerce Settings &gt; General &gt; Default customer location &gt; Geolocate<\/strong><\/li>\n<\/ul>\n\n<h4>\ud83d\ude80 Pro Version<\/h4>\n\n<p>Need bulk category rules, payment gateway restrictions by country, variation-level rules, or an analytics dashboard?\n<a href=\"https:\/\/windcodex.com\/product\/woocommerce-country-restriction-plugin\/\">GeoBlock Pro is available at windcodex.com<\/a><\/p>\n\n<h4>Privacy<\/h4>\n\n<p>GeoBlock uses the visitor's IP address solely to determine their country. No personal data is stored permanently. Detection results are cached in WooCommerce session storage and WordPress transients with a 1-hour TTL. No data is sent to external servers. This plugin does not collect, sell, or share any visitor data.<\/p>\n\n<!--section=installation-->\n<p><strong>From your WordPress dashboard:<\/strong><\/p>\n\n<ol>\n<li>Go to <strong>Plugins &gt; Add New<\/strong>.<\/li>\n<li>Search for <strong>WindCodex GeoBlock<\/strong>.<\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong>.<\/li>\n<\/ol>\n\n<p><strong>Manual installation:<\/strong><\/p>\n\n<ol>\n<li>Download the plugin ZIP file.<\/li>\n<li>Upload the <code>windcodex-geoblock<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<\/ol>\n\n<p><strong>After activation:<\/strong><\/p>\n\n<ol>\n<li>Go to <strong>WooCommerce &gt; Settings &gt; General<\/strong> and set \"Default customer location\" to <strong>Geolocate<\/strong> or <strong>Geolocate (with page caching support)<\/strong>.<\/li>\n<li>Go to <strong>WooCommerce &gt; GeoBlock Restrictions<\/strong> to choose your global restriction mode.<\/li>\n<li>Edit any product and use the <strong>GeoBlock - Country Restrictions<\/strong> meta box to set rules.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20require%20any%20api%20key%20or%20account%3F\"><h3>Does this plugin require any API key or account?<\/h3><\/dt>\n<dd><p>No. GeoBlock uses WooCommerce's built-in geolocation engine (MaxMind GeoLite2), which is already bundled with WooCommerce. No external API key, account, or paid service is needed.<\/p><\/dd>\n<dt id=\"which%20countries%20can%20i%20block%20or%20restrict%3F\"><h3>Which countries can I block or restrict?<\/h3><\/dt>\n<dd><p>All countries supported by WooCommerce \u2014 the same full list used in WooCommerce shipping and tax settings. You can restrict any single country or any combination of countries on each product independently.<\/p><\/dd>\n<dt id=\"how%20do%20i%20block%20a%20specific%20country%20from%20purchasing%20a%20product%3F\"><h3>How do I block a specific country from purchasing a product?<\/h3><\/dt>\n<dd><p>Open the product in your WordPress admin, find the <strong>GeoBlock - Country Restrictions<\/strong> meta box, select <strong>Exclude<\/strong>, choose the countries you want to block, and save. That country's visitors will be blocked immediately.<\/p><\/dd>\n<dt id=\"can%20i%20restrict%20products%20to%20only%20specific%20countries%20%28whitelist%29%3F\"><h3>Can I restrict products to only specific countries (whitelist)?<\/h3><\/dt>\n<dd><p>Yes. Select <strong>Include<\/strong> mode in the meta box and choose the countries that are allowed to purchase. All other countries will be restricted automatically.<\/p><\/dd>\n<dt id=\"will%20this%20work%20with%20page%20caching%20plugins%20like%20wp%20rocket%20or%20litespeed%3F\"><h3>Will this work with page caching plugins like WP Rocket or LiteSpeed?<\/h3><\/dt>\n<dd><p>Yes. Set WooCommerce's \"Default customer location\" to <strong>Geolocate (with page caching support)<\/strong> (AJAX mode). Country detection happens via AJAX after page load, so it works correctly on fully cached pages. GeoBlock also includes a built-in WP Rocket compatibility layer that excludes product pages from cache.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20woocommerce%20geolocation%20is%20not%20enabled%3F\"><h3>What happens if WooCommerce geolocation is not enabled?<\/h3><\/dt>\n<dd><p>GeoBlock shows a warning banner in the plugin settings page. Without geolocation, guest visitors fall back to the store's base country and restrictions will not apply to them. Logged-in customers with a saved shipping or billing address are still detected correctly.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20variable%20products%3F\"><h3>Does this work with variable products?<\/h3><\/dt>\n<dd><p>Yes. Country rules are set at the parent product level and automatically apply to all variations. In Hide and Catalog Only modes, the entire product including all variations is restricted. In Message mode, variation dropdowns and the Add to Cart button are both hidden on the product page.<\/p><\/dd>\n<dt id=\"what%20if%20a%20customer%20uses%20a%20vpn%3F\"><h3>What if a customer uses a VPN?<\/h3><\/dt>\n<dd><p>GeoBlock detects country based on IP address. A customer using a VPN may appear to be in a different country. For stores where VPN circumvention is a concern, enable the \"Force Geolocation\" option, which ignores saved addresses and always uses current IP detection.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20a%20restricted%20product%20is%20already%20in%20a%20customer%27s%20cart%3F\"><h3>What happens if a restricted product is already in a customer's cart?<\/h3><\/dt>\n<dd><p>GeoBlock automatically removes restricted products from the cart when the customer visits the cart or checkout page, and displays a clear notice explaining why. Checkout is also blocked as a final safety net even if the cart page was skipped.<\/p><\/dd>\n<dt id=\"can%20i%20set%20different%20country%20rules%20for%20different%20products%3F\"><h3>Can I set different country rules for different products?<\/h3><\/dt>\n<dd><p>Yes. Each product has its own independent set of rules. Product A can be restricted to Europe only, Product B excluded from one specific country, and Product C open to everyone \u2014 all at the same time.<\/p><\/dd>\n<dt id=\"does%20geo%20blocking%20affect%20seo%20or%20google%20indexing%3F\"><h3>Does geo blocking affect SEO or Google indexing?<\/h3><\/dt>\n<dd><p>No. Country restrictions are applied at the application layer. Search engine crawlers are not affected and your products continue to be indexed normally. Country-based product restrictions are standard, accepted practice in international e-commerce.<\/p><\/dd>\n<dt id=\"is%20this%20plugin%20gdpr%20compliant%3F\"><h3>Is this plugin GDPR compliant?<\/h3><\/dt>\n<dd><p>Yes. GeoBlock processes IP addresses only to determine the visitor's geographic country \u2014 a legitimate interest under e-commerce operation. No personal data is stored beyond the session and transient TTL (1 hour). No data is shared with third parties. Update your own privacy policy to document your use of geolocation.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20woocommerce%20subscriptions%3F\"><h3>Does this work with WooCommerce Subscriptions?<\/h3><\/dt>\n<dd><p>Yes. GeoBlock's compatibility layer hooks into WooCommerce Subscriptions' own purchasability filters and fully supports both <code>subscription<\/code> and <code>variable-subscription<\/code> product types.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20with%20elementor%2C%20divi%2C%20or%20other%20page%20builders%3F\"><h3>Can I use this with Elementor, Divi, or other page builders?<\/h3><\/dt>\n<dd><p>Yes. Use the <code>[geoblock_product_message id=PRODUCT_ID]<\/code> shortcode in any page builder element or custom template to display the restriction message anywhere on your site.<\/p><\/dd>\n<dt id=\"how%20do%20i%20test%20that%20country%20restrictions%20are%20working%20correctly%3F\"><h3>How do I test that country restrictions are working correctly?<\/h3><\/dt>\n<dd><p>Enable Debug Mode in <strong>WooCommerce &gt; GeoBlock Restrictions &gt; Advanced<\/strong>. An admin-only debug toolbar will appear at the bottom of every frontend page showing the detected country, IP address, and detection method. You can also temporarily set your own country as a restricted country to verify the hide or message behaviour.<\/p><\/dd>\n<dt id=\"does%20the%20%22hide%20completely%22%20mode%20still%20show%20the%20product%20on%20direct%20url%3F\"><h3>Does the \"Hide completely\" mode still show the product on direct URL?<\/h3><\/dt>\n<dd><p>No. In Hide completely mode, the direct product URL returns a 404 page. You can also configure a redirect URL to send restricted visitors to a custom page (like a contact or coming-soon page) instead of a 404.<\/p><\/dd>\n<dt id=\"how%20is%20country%20detection%20performed%3F\"><h3>How is country detection performed?<\/h3><\/dt>\n<dd><p>GeoBlock uses a 6-layer detection chain: (1) shipping address, (2) billing address, (3) WooCommerce session, (4) WordPress transient cache, (5) MaxMind GeoLite2 database via WooCommerce's built-in engine, (6) store base country fallback. Results are cached per session to avoid repeated lookups.<\/p><\/dd>\n<dt id=\"does%20geoblock%20work%20with%20woocommerce%20blocks%3F\"><h3>Does GeoBlock work with WooCommerce Blocks?<\/h3><\/dt>\n<dd><p>Yes. WooCommerce Blocks compatibility is declared. Cart and checkout protection applies regardless of whether classic or block-based cart and checkout is used.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Added: Help button in the settings page header linking to plugin documentation.<\/li>\n<li>Added: Pro upsell banner displayed inline on the settings page below the header.<\/li>\n<li>Added: Review request notice displayed inline on the settings page after 7 days of use, with \"Leave a Review\", \"I already did\", and \"Maybe Later\" (14-day snooze) actions.<\/li>\n<li>Improved: Review request notice is now rendered in-page instead of as a floating WordPress admin notice at the top of every page.<\/li>\n<li>Improved: Primary \"Leave a Review\" button styled with gradient matching the Pro banner.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Three restriction modes: Hide completely, Hide from catalog (Catalog Only), Show restriction message.<\/li>\n<li>Per-product Include\/Exclude country rules with searchable Select2 country selector.<\/li>\n<li>Custom restriction message with HTML support and configurable position on product page (4 positions).<\/li>\n<li>Redirect URL option for Hide completely mode.<\/li>\n<li>Allow purchase via direct URL toggle for Catalog Only mode.<\/li>\n<li>6-layer country detection: shipping address \u2192 billing address \u2192 WC session \u2192 transient cache \u2192 MaxMind GeoLite2 \u2192 store base.<\/li>\n<li>Cloudflare <code>CF-Connecting-IP<\/code> header support for reverse-proxied sites.<\/li>\n<li>Session and transient caching for geolocation performance (1-hour TTL).<\/li>\n<li>Force Geolocation option to ignore saved addresses and always use IP detection.<\/li>\n<li>Cart and checkout protection \u2014 restricted products auto-removed if added before rule was applied.<\/li>\n<li>Server-side add-to-cart validation via <code>woocommerce_add_to_cart_validation<\/code> blocks API\/AJAX bypass attempts.<\/li>\n<li>Variation ID parent resolution \u2014 rules on parent product correctly block all child variations.<\/li>\n<li><code>[geoblock_product_message]<\/code> shortcode for page builder and custom template compatibility.<\/li>\n<li>Admin debug toolbar (admin-only) showing country, IP, and detection source.<\/li>\n<li>AJAX save and reset with toast notifications and sticky footer save bar.<\/li>\n<li>HPOS (High-Performance Order Storage) compatibility declared.<\/li>\n<li>WooCommerce Blocks compatibility.<\/li>\n<li>Built-in compatibility: Price Based on Country, WPML, WooCommerce Product Bundles, WooCommerce Subscriptions, WP Rocket, Speed Optimizer by SiteGround.<\/li>\n<li>Translation-ready with complete <code>.pot<\/code> file included.<\/li>\n<\/ul>","raw_excerpt":"Block WooCommerce products by country. Hide products, restrict checkout, or show a custom message by geolocation \u2014 no API key required.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/es-uy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/292628","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/es-uy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/es-uy.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/es-uy.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=292628"}],"author":[{"embeddable":true,"href":"https:\/\/es-uy.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/windcodex"}],"wp:attachment":[{"href":"https:\/\/es-uy.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=292628"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/es-uy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=292628"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/es-uy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=292628"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/es-uy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=292628"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/es-uy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=292628"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/es-uy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=292628"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}