{"id":299115,"date":"2026-04-24T11:06:39","date_gmt":"2026-04-24T11:06:39","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/geoshield-country-restrictions-lite-for-woocommerce\/"},"modified":"2026-04-24T11:06:05","modified_gmt":"2026-04-24T11:06:05","slug":"geoshield-country-restrictions-lite","status":"publish","type":"plugin","link":"https:\/\/test.wordpress.org\/plugins\/geoshield-country-restrictions-lite\/","author":20442897,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.0","stable_tag":"1.0.0","tested":"6.9.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"GeoShield - Country Restrictions Lite for WooCommerce","header_author":"R.Sabbir","header_description":"Restrict WooCommerce products by country \u2014 hide products or disable purchases for visitors from specific regions. Lightweight, fast, and GDPR-friendly.","assets_banners_color":"7cc1bb","last_updated":"2026-04-24 11:06:05","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/rsabbir.com\/","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/geoshield-country-restrictions-lite\/","header_author_uri":"https:\/\/profiles.wordpress.org\/sabbir37\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":83,"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":"sabbir37","date":"2026-04-24 11:06:05"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3514536,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.jpeg":{"filename":"banner-1544x500.jpeg","revision":3514536,"resolution":"1544x500","location":"assets","locale":"","width":1376,"height":500},"banner-772x250.jpeg":{"filename":"banner-772x250.jpeg","revision":3514536,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3514536,"resolution":"1","location":"assets","locale":"","width":1380,"height":694},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3514536,"resolution":"2","location":"assets","locale":"","width":1346,"height":1182},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3514536,"resolution":"3","location":"assets","locale":"","width":1421,"height":644},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3514536,"resolution":"4","location":"assets","locale":"","width":1226,"height":789}},"screenshots":{"1":"<strong>Dashboard<\/strong> \u2014 Overview of your store's geographic restriction status.","2":"<strong>Global Settings<\/strong> \u2014 Configure global restriction behavior and messages.","3":"<strong>Product Settings<\/strong> \u2014 The Country Restrictions tab within the product editor.","4":"<strong>Frontend Notice<\/strong> \u2014 Restriction message displayed to visitors from restricted regions."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[19870,4124,217147,249594,286],"plugin_category":[45,49],"plugin_contributors":[251054],"plugin_business_model":[],"class_list":["post-299115","plugin","type-plugin","status-publish","hentry","plugin_tags-country-restriction","plugin_tags-geolocation","plugin_tags-product-visibility","plugin_tags-restrict-products","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-maps-and-location","plugin_contributors-sabbir37","plugin_committers-sabbir37"],"banners":{"banner":"https:\/\/ps.w.org\/geoshield-country-restrictions-lite\/assets\/banner-772x250.jpeg?rev=3514536","banner_2x":"https:\/\/ps.w.org\/geoshield-country-restrictions-lite\/assets\/banner-1544x500.jpeg?rev=3514536","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/geoshield-country-restrictions-lite\/assets\/icon-256x256.png?rev=3514536","icon_2x":"https:\/\/ps.w.org\/geoshield-country-restrictions-lite\/assets\/icon-256x256.png?rev=3514536","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/geoshield-country-restrictions-lite\/assets\/screenshot-1.png?rev=3514536","caption":"<strong>Dashboard<\/strong> \u2014 Overview of your store's geographic restriction status."},{"src":"https:\/\/ps.w.org\/geoshield-country-restrictions-lite\/assets\/screenshot-2.png?rev=3514536","caption":"<strong>Global Settings<\/strong> \u2014 Configure global restriction behavior and messages."},{"src":"https:\/\/ps.w.org\/geoshield-country-restrictions-lite\/assets\/screenshot-3.png?rev=3514536","caption":"<strong>Product Settings<\/strong> \u2014 The Country Restrictions tab within the product editor."},{"src":"https:\/\/ps.w.org\/geoshield-country-restrictions-lite\/assets\/screenshot-4.png?rev=3514536","caption":"<strong>Frontend Notice<\/strong> \u2014 Restriction message displayed to visitors from restricted regions."}],"raw_content":"<!--section=description-->\n<p><strong>GeoShield Lite<\/strong> is a geolocation-based product restriction plugin for WooCommerce. It gives store owners control over which products are visible or purchasable based on a visitor's country.<\/p>\n\n<p>This is useful for stores that need to comply with international licensing agreements, regional distribution contracts, or country-specific product availability rules.<\/p>\n\n<h3>How It Works<\/h3>\n\n<p>GeoShield Lite primarily uses the built-in WooCommerce geolocation system (MaxMind GeoIP database) to detect a visitor's country. To ensure a seamless \"out-of-the-box\" experience for stores without a MaxMind configuration, the plugin includes a fail-safe fallback to a legitimate third-party geolocation service. Based on per-product restriction rules you configure, the plugin can either hide products entirely or disable the purchase button for visitors from specified countries.<\/p>\n\n<p>All restriction logic runs locally using WordPress metadata \u2014 external API calls are used strictly as a fallback for country identification when local detection is unavailable.<\/p>\n\n<h3>Features<\/h3>\n\n<ul>\n<li><strong>Per-Product Restrictions<\/strong> \u2014 Define unique country restriction rules directly within the WooCommerce product editor.<\/li>\n<li><strong>Variation-Level Overrides<\/strong> \u2014 Apply independent geographic rules to specific product variations.<\/li>\n<li><strong>Blacklist and Whitelist Modes<\/strong> \u2014 Block selected countries (blacklist) or allow only selected countries (whitelist).<\/li>\n<li><strong>Two Restriction Actions<\/strong> \u2014 Hide the product completely from the catalog, or keep it visible but disable the purchase button.<\/li>\n<li><strong>Custom Restriction Messages<\/strong> \u2014 Display a configurable message to visitors who are restricted from purchasing.<\/li>\n<li><strong>Automatic Catalog Filtering<\/strong> \u2014 Restricted products are automatically filtered from the shop page, category pages, search results, and related product sections.<\/li>\n<li><strong>WooCommerce Blocks Compatibility<\/strong> \u2014 Works with both classic and block-based Cart and Checkout pages.<\/li>\n<li><strong>HPOS Compatible<\/strong> \u2014 Fully compatible with WooCommerce High-Performance Order Storage.<\/li>\n<\/ul>\n\n<h3>Configuration<\/h3>\n\n<p>After activation, configure restrictions on individual products:<\/p>\n\n<ol>\n<li>Edit any WooCommerce product.<\/li>\n<li>Open the <strong>Country Restrictions<\/strong> tab in the Product Data panel.<\/li>\n<li>Enable restrictions and select your target countries.<\/li>\n<li>Choose between <strong>Hide Product<\/strong> or <strong>Disable Purchase<\/strong>.<\/li>\n<li>Save the product.<\/li>\n<\/ol>\n\n<p>Global settings are available under the <strong>GeoShield &gt; Settings<\/strong> menu.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>GeoShield Lite uses external services to detect visitor locations for restriction purposes. Below is complete documentation of all external services used, what data is transmitted, and when.<\/p>\n\n<h4>IP Address Detection Service (ipify)<\/h4>\n\n<p><strong>What it does:<\/strong> Detects your server's public IP address to enable accurate geolocation when your server is behind a proxy, load balancer, or CDN.<\/p>\n\n<p><strong>When it's used:<\/strong> Only when the plugin needs to determine the server's external IP address for geolocation purposes. This typically happens once during initial setup or when geolocation cache expires.<\/p>\n\n<p><strong>What data is sent:<\/strong> A standard HTTP request to api.ipify.org. No user data, no store data, no personal information is transmitted. Only your server's IP address is detected (which is already visible to any website you connect to).<\/p>\n\n<p><strong>Service provider:<\/strong> ipify API\n<strong>Website:<\/strong> https:\/\/www.ipify.org\n<strong>Terms of Service:<\/strong> https:\/\/www.ipify.org\n<strong>Privacy Policy:<\/strong> https:\/\/www.ipify.org (ipify does not log or store IP addresses)<\/p>\n\n<h4>Geolocation Service (IP-API)<\/h4>\n\n<p><strong>What it does:<\/strong> Converts IP addresses to geographic locations (country and state\/region) to enforce your restriction rules.<\/p>\n\n<p><strong>When it's used:<\/strong> As a fallback when WooCommerce's built-in geolocation is unavailable. Only activates if you haven't configured MaxMind GeoIP in WooCommerce settings.<\/p>\n\n<p><strong>What data is sent:<\/strong> The visitor's IP address is sent to ip-api.com to determine their country and state\/region. No other personal information is transmitted.<\/p>\n\n<p><strong>Service provider:<\/strong> IP-API\n<strong>Website:<\/strong> https:\/\/ip-api.com\n<strong>Terms of Service:<\/strong> https:\/\/ip-api.com\/docs\/legal\n<strong>Privacy Policy:<\/strong> https:\/\/ip-api.com\/docs\/legal<\/p>\n\n<p><strong>Note:<\/strong> You can avoid using this fallback service by configuring MaxMind GeoIP in WooCommerce \u2192 Settings \u2192 Integration. When MaxMind is configured, GeoShield uses WooCommerce's native geolocation exclusively.<\/p>\n\n<h4>Data Privacy &amp; GDPR Compliance<\/h4>\n\n<p>GeoShield is designed with privacy in mind:<\/p>\n\n<ul>\n<li>Only IP addresses are transmitted to external services (no names, emails, or personal data)<\/li>\n<li>IP addresses are processed solely for geolocation purposes<\/li>\n<li>No data is stored by external services (per their privacy policies)<\/li>\n<li>All external calls use secure HTTPS connections<\/li>\n<li>You can use WooCommerce's built-in MaxMind integration to eliminate fallback external calls entirely<\/li>\n<\/ul>\n\n<p>If you have privacy concerns, we recommend configuring MaxMind GeoIP in WooCommerce settings to keep all geolocation processing local to your server.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>geoshield-country-restrictions-lite<\/code> directory to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Go to <strong>WooCommerce &gt; Settings &gt; General<\/strong> and set <strong>Default Customer Location<\/strong> to \"Geolocate\".<\/li>\n<li>Edit any product and use the <strong>Country Restrictions<\/strong> tab to set up restrictions.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20does%20the%20plugin%20detect%20a%20visitor%27s%20country%3F\"><h3>How does the plugin detect a visitor's country?<\/h3><\/dt>\n<dd><p>GeoShield Lite uses the WooCommerce geolocation system, which determines a visitor's approximate location based on their IP address using the MaxMind GeoIP database.<\/p><\/dd>\n<dt id=\"can%20i%20restrict%20individual%20product%20variations%3F\"><h3>Can I restrict individual product variations?<\/h3><\/dt>\n<dd><p>Yes. Each variation can have its own independent restriction rules, separate from the parent product.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20a%20product%20is%20hidden%3F\"><h3>What happens when a product is hidden?<\/h3><\/dt>\n<dd><p>When set to \"Hide Product\", the product is removed from the shop catalog, search results, and category pages. Direct URL access returns a 404 page by default, though you can configure it to redirect to the shop page instead.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20purchase%20is%20disabled%3F\"><h3>What happens when purchase is disabled?<\/h3><\/dt>\n<dd><p>When set to \"Disable Purchase\", the product remains visible in the catalog and on its single product page, but the Add to Cart button is disabled and a restriction message is displayed.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20caching%20plugins%3F\"><h3>Does this work with caching plugins?<\/h3><\/dt>\n<dd><p>Yes. The plugin follows WooCommerce geolocation best practices, which includes compatibility with popular caching solutions.<\/p><\/dd>\n<dt id=\"does%20this%20hide%20products%20from%20search%20engines%3F\"><h3>Does this hide products from search engines?<\/h3><\/dt>\n<dd><p>Search engine crawlers are typically geolocated to a specific region. Products will remain crawlable unless you explicitly restrict them for that region.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Product and variation level country restriction support.<\/li>\n<li>Blacklist and whitelist mode support.<\/li>\n<li>Hide and disable purchase restriction actions.<\/li>\n<li>WooCommerce StoreAPI and HPOS compatibility.<\/li>\n<\/ul>","raw_excerpt":"Country-based product restrictions for WooCommerce. Hide products or disable purchases for visitors from specific geographic regions.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/299115","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=299115"}],"author":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/sabbir37"}],"wp:attachment":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=299115"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=299115"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=299115"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=299115"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=299115"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=299115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}