{"id":361768,"date":"2026-09-01T05:58:48","date_gmt":"2026-09-01T05:58:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/country-catalog-rules-for-woocommerce\/"},"modified":"2026-09-01T05:58:20","modified_gmt":"2026-09-01T05:58:20","slug":"yuupee-country-catalog-rules-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/yuupee-country-catalog-rules-for-woocommerce\/","author":23549640,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.4.0","stable_tag":"0.4.0","tested":"7.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Yuupee Country Catalog Rules for WooCommerce","header_author":"Abid","header_description":"Restrict product and category visibility by customer country, reusing WooCommerce's built-in MaxMind GeoIP detection instead of a separate geolocation service.","assets_banners_color":"ffffff","last_updated":"2026-09-01 05:58:20","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/Abdoudiba\/yuupee-country-catalog-rules-for-woocommerce","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":56,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.4.0":{"tag":"0.4.0","author":"abdoudiba","date":"2026-09-01 05:58:20","revision":3675368}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3675376,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3675376,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3675376,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3675376,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.4.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[271163,19870,4124,247426,286],"plugin_category":[45,49],"plugin_contributors":[278145],"plugin_business_model":[],"class_list":["post-361768","plugin","type-plugin","status-publish","hentry","plugin_tags-catalog-visibility","plugin_tags-country-restriction","plugin_tags-geolocation","plugin_tags-multi-country","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-maps-and-location","plugin_contributors-abdoudiba","plugin_committers-abdoudiba"],"banners":{"banner":"https:\/\/ps.w.org\/yuupee-country-catalog-rules-for-woocommerce\/assets\/banner-772x250.png?rev=3675376","banner_2x":"https:\/\/ps.w.org\/yuupee-country-catalog-rules-for-woocommerce\/assets\/banner-1544x500.png?rev=3675376","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/yuupee-country-catalog-rules-for-woocommerce\/assets\/icon-128x128.png?rev=3675376","icon_2x":"https:\/\/ps.w.org\/yuupee-country-catalog-rules-for-woocommerce\/assets\/icon-256x256.png?rev=3675376","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Most country-restriction plugins for WooCommerce bring their own IP\ngeolocation. If your store already has WooCommerce's built-in geolocation\nactive (the MaxMind GeoIP2 database WooCommerce ships with), a second,\nindependent lookup can disagree with it near a border or behind a VPN.<\/p>\n\n<p>Yuupee Country Catalog Rules reuses <code>WC_Geolocation<\/code> \u2014 the same detection WooCommerce already\nuses for shipping, tax, and currency \u2014 so there's only ever one source of\ntruth about where a visitor is.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Restrict a whole product category to specific countries in one place.<\/li>\n<li>Per-product override for exceptions to a category rule.<\/li>\n<li>Two modes: hide completely, or show everywhere \u2014 including shop\/category\ngrid cards \u2014 with an Amazon-style \"not available in your country\" badge\nand a custom message that can include the visitor's detected country name.<\/li>\n<li>Admin preview mode (<code>?ccrw_preview_country=XX<\/code>) \u2014 test rules without a VPN.<\/li>\n<li>Fails open on undetected location: never accidentally hides a product from\na real customer because geolocation couldn't determine their country.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload to <code>\/wp-content\/plugins\/<\/code> or install via Plugins \u2192 Add New \u2192 Upload.<\/li>\n<li>Activate.<\/li>\n<li>Set category rules under Products \u2192 Categories.<\/li>\n<li>Set per-product overrides under each product's Product Data \u2192 Country Catalog Rules tab.<\/li>\n<li>Optional: customize the unavailable-product message under WooCommerce \u2192\nSettings \u2192 Country Catalog Rules.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20replace%20woocommerce%27s%20own%20geolocation%20setting%3F\"><h3>Does this replace WooCommerce's own geolocation setting?<\/h3><\/dt>\n<dd><p>No \u2014 it calls WooCommerce's own <code>WC_Geolocation::geolocate_ip()<\/code> directly.\nMake sure a MaxMind license key is configured (WooCommerce \u2192 Settings \u2192\nIntegration \u2192 MaxMind Geolocation) so that lookup can actually resolve a\ncountry. If your store is behind Cloudflare or another reverse proxy, the\norigin also needs to see the real visitor IP \u2014 see the project README's\n\"Geolocation troubleshooting\" section.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20a%20visitor%27s%20country%20can%27t%20be%20detected%3F\"><h3>What happens if a visitor's country can't be detected?<\/h3><\/dt>\n<dd><p>Restricted products stay visible. The plugin fails open, not closed.<\/p><\/dd>\n<dt id=\"does%20this%20affect%20product%20feeds%20%28meta%2C%20google%2C%20tiktok%29%3F\"><h3>Does this affect product feeds (Meta, Google, TikTok)?<\/h3><\/dt>\n<dd><p>It hooks into WooCommerce's standard visibility filter, which is the correct\nintegration point, but hasn't been verified against every third-party feed\nplugin. See the project README for the full list of known v1 limitations.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Rename: the plugin is now \"Yuupee Country Catalog Rules for WooCommerce\"\n(was \"Country Catalog Rules for WooCommerce\") and the slug is\n  yuupee-country-catalog-rules-for-woocommerce. Text domain updated to\nmatch. No functional changes; the <code>ccrw<\/code> internal prefix, option\/meta\nkeys and the <code>?ccrw_preview_country<\/code> query parameter are unchanged.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Rename: the plugin is now \"Country Catalog Rules for WooCommerce\"\n(was \"Geo Catalog for WooCommerce\"). Internal prefix, text domain,\noption\/meta keys and the admin-preview query parameter changed from\n  wgc to <code>ccrw<\/code>. First public release under the new name.<\/li>\n<\/ul>\n\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>Add: declare the <code>Requires Plugins: woocommerce<\/code> dependency header.<\/li>\n<li>Compat: tested up to WordPress 7.1 and WooCommerce 10.0.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Add: \"Show, mark unavailable\" mode now shows a badge on shop\/category\/\nsearch grid cards too (previously only the single product page), with\nthe grid's Add to Cart button swapped for a \"Not available\" notice \u2014\nmatches how Amazon flags region-blocked products in listings, not just\non the product page.<\/li>\n<li>Add: the unavailable message (WooCommerce \u2192 Settings \u2192 Country Catalog Rules) now\nsupports a <code>{country}<\/code> token, replaced with the visitor's detected\ncountry name.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Fix: category rules now cascade to subcategories (a restriction on a\nparent category applies to products only assigned to a child category).<\/li>\n<li>Fix: real (non-preview) visitor geolocation no longer defaults to the\nstore's own base country \u2014 now calls WC_Geolocation::geolocate_ip()\ndirectly instead of a shortcut that was seeded from the store's default\ncustomer location setting.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release: category and product-level country restriction, two\nrestriction modes, admin preview, WooCommerce Settings tab.<\/li>\n<\/ul>","raw_excerpt":"Restrict product and category visibility by customer country, reusing WooCommerce&#039;s own geolocation instead of a second IP lookup.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/361768","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=361768"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/abdoudiba"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=361768"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=361768"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=361768"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=361768"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=361768"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=361768"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}