[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f3AnYczMud77y0zpdX9uVPEYeiWfbjk8K8lYcIpe0mow":3,"$f9kTKoG_AiwsIWixBA83axuj7ACB-UiqbWdm7_KjLB4Q":506,"$f_07K9JMILjmCUYmBO3ozy2DIhqFZVOyMa5lpHE5G-4c":510},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":13,"last_updated":14,"tested_up_to":15,"requires_at_least":16,"requires_php":17,"tags":18,"homepage":23,"download_link":24,"security_score":25,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":27,"discovery_status":28,"vulnerabilities":29,"developer":30,"crawl_stats":26,"alternatives":38,"analysis":132,"fingerprints":484},"better-coupon-restrictions","Better Coupon Restrictions for WooCommerce","1.0.4","Elliot Sowersby \u002F RelyWP","https:\u002F\u002Fprofiles.wordpress.org\u002Felliotvs\u002F","\u003Cp>Better Coupon Restrictions adds additional restrictions and options to your WooCommerce coupons.\u003C\u002Fp>\n\u003Cp>When enabled, you will see a new “Better Coupon Restrictions” tab in the coupon edit screen.\u003C\u002Fp>\n\u003Cp>From there, you can set the following additional restrictions:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\n\u003Cp>\u003Cstrong>Improved Product Restrictions\u003C\u002Fstrong>: This section improves the default product usage restrictions allowing you to set a minimum and maximum quantity for each.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Product Category Restrictions\u003C\u002Fstrong>: This section improves the default product category usage restrictions allowing you to set a minimum and maximum quantity for each.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Cart Restrictions\u003C\u002Fstrong>: This section allows you to set restrictions based that cart quantity, subtotal, and total weight.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Date Restrictions\u003C\u002Fstrong>: This section allows you to set restrictions based on the current date including a date range, select months, or weekdays.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Customer Status Restrictions\u003C\u002Fstrong>: This section allows you to set restrictions based on the customer’s status including if they are a new customer, or their logged in status.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>User Role Restrictions\u003C\u002Fstrong>: This section allows you to set restrictions based on the customer’s user role.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>PRO Version\u003C\u002Fh3>\n\u003Cp>The PRO version of Better Coupon Restrictions includes the following additional features:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\n\u003Cp>\u003Cstrong>Customer Address Restrictions\u003C\u002Fstrong>: This section allows you to set restrictions based on the customer’s billing and shipping address. You can also set a maximum use per address.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Customer Order History Restrictions\u003C\u002Fstrong>: This section allows you to set restrictions based on the customer’s order history including their total spent and total orders.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Time Since Last Order Restrictions\u003C\u002Fstrong>: This section allows you to set restrictions based on the time since the customer’s last order.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Time Registered Restrictions\u003C\u002Fstrong>: This section allows you to set restrictions based on the time since the customer registered.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Referring Domain Restrictions\u003C\u002Fstrong>: This section allows you to set restrictions based on the referring domain.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>IP Address Restrictions\u003C\u002Fstrong>: This section allows you to set restrictions based on the customer’s IP address including allowed and disallowed IP addresses, along with a usage limit per IP.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Meta Data Restrictions\u003C\u002Fstrong>: This section allows you to set restrictions based on the customer’s meta data.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Cookie Restrictions\u003C\u002Fstrong>: This section allows you to set restrictions based on the customer’s cookies.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Frelywp.com\u002Fplugins\u002Fbetter-coupon-restrictions\u002F\" rel=\"nofollow ugc\">Learn more about Better Coupon Restrictions PRO\u003C\u002Fa>\u003C\u002Fp>\n","Additional restrictions and options for your WooCommerce coupons.",30,939,0,"2025-06-13T13:04:00.000Z","6.8.5","4.7","",[19,20,21,22],"coupon","coupons","restrict","restrictions","https:\u002F\u002Frelywp.com\u002Fplugins\u002Fbetter-coupon-restrictions\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fbetter-coupon-restrictions.1.0.4.zip",100,null,"2026-04-16T10:56:18.058Z","no_bundle",[],{"slug":31,"display_name":7,"profile_url":8,"plugin_count":32,"total_installs":33,"avg_security_score":34,"avg_patch_time_days":35,"trust_score":36,"computed_at":37},"elliotvs",8,145940,97,206,77,"2026-05-19T20:16:50.534Z",[39,60,82,99,117],{"slug":40,"name":41,"version":42,"author":43,"author_profile":44,"description":45,"short_description":46,"active_installs":47,"downloaded":48,"rating":25,"num_ratings":49,"last_updated":50,"tested_up_to":51,"requires_at_least":52,"requires_php":17,"tags":53,"homepage":57,"download_link":58,"security_score":59,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":27},"wc-coupons-by-country","WC Coupons by Country","1.0.0","AxisThemes","https:\u002F\u002Fprofiles.wordpress.org\u002Faxisthemes\u002F","\u003Ch4>Adds country usage restriction to WooCommerce Coupon\u003C\u002Fh4>\n\u003Cp>This plugin adds usage restriction to specific countries in WooCommerce coupons by customer’s billing or shipping country.\u003C\u002Fp>\n\u003Cp>Please notice that \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoocommerce\u002F\" rel=\"ugc\">WooCommerce\u003C\u002Fa> must be installed and active.\u003C\u002Fp>\n\u003Ch4>Installation\u003C\u002Fh4>\n\u003Cp>Check out our installation guide and configuration of WC Coupons by Country tab \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fextend\u002Fplugins\u002Fwc-coupons-by-country\u002Finstallation\u002F\" rel=\"ugc\">Installation\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch4>Questions?\u003C\u002Fh4>\n\u003Cp>You can answer your questions using:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Our Session \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fextend\u002Fplugins\u002Fwc-coupons-by-country\u002Ffaq\u002F\" rel=\"ugc\">FAQ\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>Creating a topic in the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fwc-coupons-by-country\" rel=\"ugc\">WordPress support forum\u003C\u002Fa> (English only).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Contribute\u003C\u002Fh4>\n\u003Cp>You can contribute to the source code in our \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Faxisthemes\u002Fwc-coupons-by-country\u002F\" rel=\"nofollow ugc\">GitHub\u003C\u002Fa> page.\u003C\u002Fp>\n","Restricts coupons usage to specific countries in WooCommerce plugin.",90,3066,2,"2016-01-12T04:50:00.000Z","4.4.34","4.0",[54,20,22,55,56],"country","usage","woocommerce","https:\u002F\u002Fgithub.com\u002Faxisthemes\u002Fwc-coupons-by-country","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwc-coupons-by-country.1.0.0.zip",85,{"slug":61,"name":62,"version":63,"author":64,"author_profile":65,"description":66,"short_description":67,"active_installs":11,"downloaded":68,"rating":69,"num_ratings":49,"last_updated":70,"tested_up_to":71,"requires_at_least":72,"requires_php":73,"tags":74,"homepage":79,"download_link":80,"security_score":25,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":81},"coupons-by-country-for-woocommerce","Coupons by country for WooCommerce","1.4","Dhrumil Kumbhani","https:\u002F\u002Fprofiles.wordpress.org\u002Fdhrumilk\u002F","\u003Cp>Coupons by Country for WooCommerce is a powerful and lightweight WooCommerce extension that allows store owners to restrict coupon usage based on customer country.\u003C\u002Fp>\n\u003Cp>If you run an international WooCommerce store, you may want to create country-specific promotions, regional discounts, or geographically targeted marketing campaigns. By default, WooCommerce does not allow country-based coupon restrictions. This plugin solves that limitation.\u003C\u002Fp>\n\u003Cp>With this plugin, you can easily control which countries are eligible to use specific coupons — directly from the WooCommerce coupon settings page.\u003C\u002Fp>\n\u003Cp>Perfect for global eCommerce businesses, region-specific campaigns, and stores offering localized promotions.\u003C\u002Fp>\n\u003Ch4>Why Restrict Coupons by Country?\u003C\u002Fh4>\n\u003Cp>Country-based coupon restrictions help you:\u003C\u002Fp>\n\u003Cp>• Run region-specific marketing campaigns\u003Cbr \u002F>\n• Offer localized discounts\u003Cbr \u002F>\n• Prevent coupon misuse across regions\u003Cbr \u002F>\n• Control promotional budgets\u003Cbr \u002F>\n• Improve targeting and conversion rates\u003Cbr \u002F>\n• Comply with regional pricing strategies\u003C\u002Fp>\n\u003Cp>Whether you want to offer special discounts in the US, run a campaign only in Europe, or provide country-exclusive deals, this plugin makes it simple.\u003C\u002Fp>\n\u003Ch4>Key Features\u003C\u002Fh4>\n\u003Ch4>Country-Based Coupon Restriction\u003C\u002Fh4>\n\u003Cp>Select one or multiple countries where the coupon will be valid.\u003C\u002Fp>\n\u003Ch4>Easy Integration with WooCommerce\u003C\u002Fh4>\n\u003Cp>Adds country restriction options directly inside the WooCommerce coupon settings.\u003C\u002Fp>\n\u003Ch4>Backend Country Selection\u003C\u002Fh4>\n\u003Cp>Simple dropdown country selector while creating or editing coupons.\u003C\u002Fp>\n\u003Ch4>Prevent Unauthorized Coupon Usage\u003C\u002Fh4>\n\u003Cp>Customers from non-selected countries will not be able to apply the coupon.\u003C\u002Fp>\n\u003Ch4>Supports WooCommerce Native Countries\u003C\u002Fh4>\n\u003Cp>Works seamlessly with WooCommerce billing and shipping country fields.\u003C\u002Fp>\n\u003Ch4>Lightweight & Performance Friendly\u003C\u002Fh4>\n\u003Cp>Clean code with no unnecessary overhead or performance impact.\u003C\u002Fp>\n\u003Ch4>How It Works\u003C\u002Fh4>\n\u003Col>\n\u003Cli>Install and activate the plugin.\u003C\u002Fli>\n\u003Cli>Go to WooCommerce \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Coupons.\u003C\u002Fli>\n\u003Cli>Create a new coupon or edit an existing one.\u003C\u002Fli>\n\u003Cli>Select the country (or countries) where the coupon should be valid.\u003C\u002Fli>\n\u003Cli>Save the coupon.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Now the coupon will only work for customers from the selected countries.\u003C\u002Fp>\n\u003Ch4>Use Cases\u003C\u002Fh4>\n\u003Cp>• Country-specific seasonal promotions\u003Cbr \u002F>\n• Region-based discount campaigns\u003Cbr \u002F>\n• International store pricing strategies\u003Cbr \u002F>\n• Limited-time regional offers\u003Cbr \u002F>\n• Exclusive country-based marketing campaigns\u003Cbr \u002F>\n• Geo-targeted WooCommerce promotions\u003C\u002Fp>\n\u003Ch4>Benefits for WooCommerce Store Owners\u003C\u002Fh4>\n\u003Cp>• Better control over promotional campaigns\u003Cbr \u002F>\n• Increased campaign effectiveness\u003Cbr \u002F>\n• Improved ROI on discount strategies\u003Cbr \u002F>\n• Reduced coupon abuse\u003Cbr \u002F>\n• Better segmentation for international customers\u003C\u002Fp>\n\u003Ch4>Compatibility\u003C\u002Fh4>\n\u003Cp>• Works with the latest WooCommerce versions\u003Cbr \u002F>\n• Compatible with latest WordPress releases\u003Cbr \u002F>\n• Works with most WooCommerce themes\u003Cbr \u002F>\n• Supports billing country validation\u003Cbr \u002F>\n• Compatible with shipping country restrictions\u003C\u002Fp>\n\u003Cp>Coupons by Country for WooCommerce is the perfect solution for store owners who want advanced coupon control without complex configuration.\u003C\u002Fp>\n\u003Cp>Install today and take full control of your international WooCommerce promotions.\u003C\u002Fp>\n","Coupons by Country for WooCommerce lets admins restrict coupon use by country seamlessly integrating with WooCommerce for targeted promotions.",1872,60,"2026-02-25T10:21:00.000Z","6.9.4","5.2","5.6",[75,76,77,20,78],"country-based-coupons","coupon-plugin-for-woocommerce","coupon-restrictions-by-country","woocommerce-coupons","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fcoupons-by-country-for-woocommerce\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcoupons-by-country-for-woocommerce.1.4.zip","2026-04-06T09:54:40.288Z",{"slug":83,"name":84,"version":85,"author":86,"author_profile":87,"description":88,"short_description":89,"active_installs":13,"downloaded":90,"rating":13,"num_ratings":13,"last_updated":91,"tested_up_to":71,"requires_at_least":92,"requires_php":93,"tags":94,"homepage":97,"download_link":98,"security_score":25,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":27},"runthings-category-children-coupons","Category Children Coupons for WooCommerce","1.4.1","runthings.dev","https:\u002F\u002Fprofiles.wordpress.org\u002Frunthingsdev\u002F","\u003Cp>Category Children Coupons for WooCommerce provides a complete replacement for WooCommerce’s built-in coupon category restrictions with additional flexibility:\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Include children mode:\u003C\u002Fstrong> Select a parent category and all its subcategories are automatically included. With WooCommerce’s default restrictions, selecting “Clothing” only matches products directly in that category – not products in “T-Shirts” or “Trousers” subcategories. This plugin includes the entire category tree.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Exclude children mode:\u003C\u002Fstrong> Match only the specific categories you select, without including subcategories. This mirrors WooCommerce’s built-in behavior but is managed within this plugin’s unified interface.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Future-proof coupons:\u003C\u002Fstrong> The plugin stores your category selection and dynamically expands child categories at validation time – new subcategories are automatically included (or excluded) without editing existing coupons.\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Four category restriction fields for complete control:\n\u003Cul>\n\u003Cli>Product categories (incl. children) – allowed categories with all descendants\u003C\u002Fli>\n\u003Cli>Exclude categories (incl. children) – blocked categories with all descendants\u003C\u002Fli>\n\u003Cli>Product categories (excl. children) – allowed categories only, no descendants\u003C\u002Fli>\n\u003Cli>Exclude categories (excl. children) – blocked categories only, no descendants\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Automatic subcategory handling based on your preference\u003C\u002Fli>\n\u003Cli>Works alongside WooCommerce’s other (non-category coupon) restrictions\u003C\u002Fli>\n\u003Cli>Customizable error messages via filter\u003C\u002Fli>\n\u003Cli>AutomateWoo compatibility – category restrictions are copied when generating coupons from templates\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>How It Works\u003C\u002Fh4>\n\u003Cp>When you select a category in an “(incl. children)” field, the plugin automatically includes all subcategories during validation. When you use an “(excl. children)” field, only the exact categories you select are matched. Selected categories with children included are validated at usage time, so the current children are automatically used, even if they have changed since the coupon was set up.\u003C\u002Fp>\n\u003Ch3>Filters\u003C\u002Fh3>\n\u003Ch4>runthings_category_children_coupons_error_message\u003C\u002Fh4>\n\u003Cp>Customize the error message shown when a coupon fails category validation.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Parameters:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>$message\u003C\u002Fcode> (string) – The default error message.\u003C\u002Fli>\n\u003Cli>\u003Ccode>$context\u003C\u002Fcode> (array) – Contains ‘coupon’ (WC_Coupon object) and ‘type’ (‘allowed’, ‘excluded’, ‘allowed_excl’, or ‘excluded_excl’).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Example:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>See \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frunthings-dev\u002Frunthings-category-children-coupons#filters\" rel=\"nofollow ugc\">readme.md on GitHub\u003C\u002Fa> for detailed code examples.\u003C\u002Fp>\n\u003Ch3>Additional Notes\u003C\u002Fh3>\n\u003Cp>Built by Matthew Harris of runthings.dev, copyright 2025.\u003C\u002Fp>\n\u003Cp>Visit \u003Ca href=\"https:\u002F\u002Frunthings.dev\u002F\" rel=\"nofollow ugc\">runthings.dev\u003C\u002Fa> for more WordPress plugins and resources.\u003C\u002Fp>\n\u003Cp>Contribute or report issues at the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frunthings-dev\u002Frunthings-category-children-coupons\" rel=\"nofollow ugc\">GitHub repository\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Icon – Discount by Gregor Cresnar, from Noun Project, https:\u002F\u002Fthenounproject.com\u002Fbrowse\u002Ficons\u002Fterm\u002Fdiscount\u002F (CC BY 3.0)\u003C\u002Fp>\n\u003Cp>Icon – Tree view by Paweł Gleń from Noun Project, https:\u002F\u002Fthenounproject.com\u002Fbrowse\u002Ficons\u002Fterm\u002Ftree-view\u002F (CC BY 3.0) – https:\u002F\u002Fthenounproject.com\u002Ficon\u002Ftree-view-3894745\u002F\u003C\u002Fp>\n","Restrict WooCommerce coupons by product categories, with options to include or exclude child\u002Fdescendant categories.",137,"2026-01-21T20:56:00.000Z","6.4","8.0",[95,20,22,96,56],"categories","subcategories","https:\u002F\u002Frunthings.dev\u002Fwordpress-plugins\u002Fcategory-children-coupons\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Frunthings-category-children-coupons.1.4.1.zip",{"slug":100,"name":101,"version":102,"author":103,"author_profile":104,"description":105,"short_description":106,"active_installs":25,"downloaded":107,"rating":25,"num_ratings":49,"last_updated":108,"tested_up_to":109,"requires_at_least":52,"requires_php":73,"tags":110,"homepage":115,"download_link":116,"security_score":59,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":27},"coupon-by-roles-for-woocommerce","Coupon By Roles For WooCommerce","0.6","ZetaMatic","https:\u002F\u002Fprofiles.wordpress.org\u002Fzetamatic\u002F","\u003Cp>The Coupon By Roles For WooCommerce plugin gives you more control over how you use coupons, making them smart and better. It’s a lightweight WooCommerce add-on that allows you to specify which roles can use the coupons.\u003C\u002Fp>\n\u003Cp>This plugin simply displays a multi-select option from which the administrator can select and assign one or more of the available roles from the coupon’s usage restriction page.\u003C\u002Fp>\n\u003Cp>Furthermore, the plugin’s Pro version includes additional features. It can be used by the administrator to enable the Allowed Countries feature, which allows only visitors from the permitted countries to use the coupon.\u003C\u002Fp>\n\u003Cp>Both the free and pro plugins are useful when running an e-commerce store and want to offer discounts to specific people based on their roles and countries. It will help you maintain relationships with specific users while also preventing others from misusing your coupons.\u003C\u002Fp>\n\u003Ch3>Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Lightweight plugin\u003C\u002Fli>\n\u003Cli>Very simple to set up and use\u003C\u002Fli>\n\u003Cli>Coupons are allowed for certain types of roles\u003C\u002Fli>\n\u003Cli>Assign one or more roles in the Coupon’s Usage Restriction section\u003C\u002Fli>\n\u003Cli>WooCommerce coupons can be restricted based on user role\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Pro Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>All features of the free version\u003C\u002Fli>\n\u003Cli>Option to Enable Allowed Roles\u003C\u002Fli>\n\u003Cli>Option to Enable Allowed Countries\u003C\u002Fli>\n\u003Cli>Customise Coupon Error Message\u003C\u002Fli>\n\u003C\u002Ful>\n","The Coupon By Roles For WooCommerce plugin gives you more control over how you use coupons, making them smart and better. It’s a lightweight WooCommer &hellip;",3605,"2021-07-08T13:16:00.000Z","5.7.15",[111,112,78,113,114],"coupon-by-roles","woocommerce-coupon-by-roles","wooocmmerce-coupon-restriction","wooocmmerce-roles","https:\u002F\u002Fzetamatic.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcoupon-by-roles-for-woocommerce.0.6.zip",{"slug":118,"name":119,"version":120,"author":86,"author_profile":87,"description":121,"short_description":122,"active_installs":69,"downloaded":123,"rating":13,"num_ratings":13,"last_updated":124,"tested_up_to":71,"requires_at_least":92,"requires_php":125,"tags":126,"homepage":130,"download_link":131,"security_score":25,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":27},"runthings-wc-coupons-role-restrict","Coupons Role Restriction for WooCommerce","1.1.3","\u003Cp>This plugin allows you to restrict the usage of WooCommerce coupons based on user roles, including guest users.\u003C\u002Fp>\n\u003Cp>You can specify which roles (including guests) are allowed or excluded from using a coupon, providing more control over your discount strategies.\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Restrict coupon usage based on user roles.\u003C\u002Fli>\n\u003Cli>Option to specify both allowed and excluded roles.\u003C\u002Fli>\n\u003Cli>Support for guest users with a “Customer Is A Guest” pseudo-role.\u003C\u002Fli>\n\u003Cli>Customize the error message via a filter.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Filters\u003C\u002Fh3>\n\u003Ch4>runthings_wc_coupons_role_restrict_error_message\u003C\u002Fh4>\n\u003Cp>This filter allows customization of the error message shown when a coupon is not valid for the user’s account type.\u003C\u002Fp>\n\u003Cp>For detailed documentation and advanced examples, see the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frunthings-dev\u002Frunthings-wc-coupons-role-restrict#filters\" rel=\"nofollow ugc\">full documentation on GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Parameters:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>\u003Ccode>$message\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>string\u003C\u002Fcode>): The default error message, e.g., \u003Ccode>\"Sorry, this coupon is not valid for your account type.\"\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>$context\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>array\u003C\u002Fcode>): Additional context for the error, including the coupon, user roles, and guest status.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Ccode>$context\u003C\u002Fcode> object format:\u003C\u002Fp>\n\u003Cp>The \u003Ccode>$context\u003C\u002Fcode> array contains the following keys:\u003Cbr \u002F>\n– \u003Cstrong>\u003Ccode>coupon\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>WC_Coupon\u003C\u002Fcode>): The coupon object being validated.\u003Cbr \u002F>\n– \u003Cstrong>\u003Ccode>is_guest\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>bool\u003C\u002Fcode>): Whether the current user is a guest (not logged in).\u003Cbr \u002F>\n– \u003Cstrong>\u003Ccode>user\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>WP_User\u003C\u002Fcode>): The current user object. For guests, this will be an empty user object.\u003Cbr \u002F>\n– \u003Cstrong>\u003Ccode>allowed_roles\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>array\u003C\u002Fcode>): Roles explicitly allowed to use the coupon, in the format \u003Ccode>[role_id => role_name]\u003C\u002Fcode>.\u003Cbr \u002F>\n– \u003Cstrong>\u003Ccode>excluded_roles\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>array\u003C\u002Fcode>): Roles explicitly excluded from using the coupon, in the format \u003Ccode>[role_id => role_name]\u003C\u002Fcode>.\u003Cbr \u002F>\n– \u003Cstrong>\u003Ccode>effective_allowed_roles\u003C\u002Fcode>\u003C\u002Fstrong> (\u003Ccode>array\u003C\u002Fcode>): The final calculated roles allowed to use the coupon, after considering exclusions, in the format \u003Ccode>[role_id => role_name]\u003C\u002Fcode>. This is the set of roles that can use the coupon.\u003C\u002Fp>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>This program is free software; you can redistribute it and\u002For modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.\u003C\u002Fp>\n\u003Cp>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\u003C\u002Fp>\n\u003Cp>You should have received a copy of the GNU General Public License along with this program; if not, see \u003Ca href=\"http:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-3.0.html\" rel=\"nofollow ugc\">http:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-3.0.html\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Icon – Discount by Gregor Cresnar, from Noun Project, https:\u002F\u002Fthenounproject.com\u002Fbrowse\u002Ficons\u002Fterm\u002Fdiscount\u002F (CC BY 3.0)\u003C\u002Fp>\n\u003Cp>Icon – restriction by Puspito, from Noun Project, https:\u002F\u002Fthenounproject.com\u002Fbrowse\u002Ficons\u002Fterm\u002Frestriction\u002F (CC BY 3.0)\u003C\u002Fp>\n","Restrict the usage of WooCommerce coupons based on user roles.",1813,"2026-01-07T01:30:00.000Z","7.4",[20,127,128,129,56],"discount","role-restriction","user-roles","https:\u002F\u002Frunthings.dev\u002Fwordpress-plugins\u002Fwc-coupons-role-restrict\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Frunthings-wc-coupons-role-restrict.1.1.3.zip",{"attackSurface":133,"codeSignals":217,"taintFlows":477,"riskAssessment":478,"analyzedAt":483},{"hooks":134,"ajaxHandlers":206,"restRoutes":213,"shortcodes":214,"cronEvents":215,"entryPointCount":216,"unprotectedCount":13},[135,141,145,150,155,159,163,167,172,176,179,183,187,191,194,197,200,203],{"type":136,"name":137,"callback":138,"file":139,"line":140},"action","admin_enqueue_scripts","bcrw_enqueue_scripts","coupon-restrictions.php",67,{"type":136,"name":142,"callback":143,"file":139,"line":144},"before_woocommerce_init","closure",94,{"type":136,"name":146,"callback":147,"file":148,"line":149},"bcrw_coupon_options_usage_restriction","bcrw_add_coupon_restrictions_fields_products","inc\\coupon-product-restrictions.php",7,{"type":136,"name":151,"callback":152,"priority":153,"file":148,"line":154},"woocommerce_coupon_options_save","bcrw_save_coupon_restrictions_fields_products",1000,413,{"type":136,"name":151,"callback":156,"priority":157,"file":148,"line":158},"bcrw_save_coupon_restrictions_fields_categories",1500,461,{"type":136,"name":151,"callback":160,"priority":161,"file":148,"line":162},"bcrw_save_coupon_restrictions_fields_attributes",2000,506,{"type":136,"name":164,"callback":165,"file":148,"line":166},"admin_footer","bcrw_custom_admin_scripts",548,{"type":168,"name":169,"callback":170,"file":171,"line":149},"filter","woocommerce_coupon_data_tabs","bcrw_add_coupon_restrictions_tab","inc\\coupon-restrictions.php",{"type":136,"name":173,"callback":174,"file":171,"line":175},"woocommerce_coupon_data_panels","bcrw_add_coupon_restrictions_fields",34,{"type":136,"name":151,"callback":177,"file":171,"line":178},"bcrw_save_coupon_restrictions_fields",554,{"type":136,"name":180,"callback":181,"file":171,"line":182},"add_meta_boxes","bcrw_add_meta_box",617,{"type":168,"name":184,"callback":185,"priority":25,"file":186,"line":149},"woocommerce_coupon_is_valid","bcrw_validate_coupon_restrictions_products","inc\\validate-products.php",{"type":168,"name":188,"callback":189,"priority":190,"file":186,"line":140},"woocommerce_coupon_get_discount_amount","bcrw_coupon_get_discount_amount",10,{"type":168,"name":184,"callback":192,"priority":25,"file":186,"line":193},"bcrw_validate_coupon_restrictions_categories",109,{"type":168,"name":188,"callback":195,"priority":190,"file":186,"line":196},"bcrw_coupon_get_discount_amount_categories",168,{"type":168,"name":184,"callback":198,"priority":25,"file":186,"line":199},"bcrw_validate_coupon_restrictions_attributes",209,{"type":168,"name":188,"callback":201,"priority":190,"file":186,"line":202},"bcrw_coupon_get_discount_amount_attributes",271,{"type":168,"name":184,"callback":204,"priority":25,"file":205,"line":149},"bcrw_validate_coupon_restrictions","inc\\validate.php",[207],{"action":208,"nopriv":209,"callback":210,"hasNonce":211,"hasCapCheck":209,"file":148,"line":212},"get_product_variations",false,"bcrw_get_product_variations_callback",true,575,[],[],[],1,{"dangerousFunctions":218,"sqlUsage":219,"outputEscaping":221,"fileOperations":13,"externalRequests":13,"nonceChecks":470,"capabilityChecks":471,"bundledLibraries":472},[],{"prepared":13,"raw":13,"locations":220},[],{"escaped":222,"rawEcho":223,"locations":224},129,128,[225,228,230,232,234,235,237,239,241,242,244,246,248,250,252,254,256,258,260,262,264,266,268,270,272,274,276,278,280,282,284,286,288,289,291,293,295,297,299,301,303,305,307,309,311,313,315,317,319,321,323,325,327,329,331,333,335,337,339,341,343,345,346,348,349,351,353,355,357,358,360,362,363,365,367,368,370,372,374,376,378,380,382,384,386,388,390,391,392,394,396,398,400,402,404,405,407,408,410,412,414,416,418,420,422,424,426,428,430,432,434,436,438,440,442,444,446,448,450,452,454,456,458,460,462,464,466,468],{"file":148,"line":226,"context":227},56,"raw output",{"file":148,"line":229,"context":227},58,{"file":148,"line":231,"context":227},68,{"file":148,"line":233,"context":227},74,{"file":148,"line":36,"context":227},{"file":148,"line":236,"context":227},88,{"file":148,"line":238,"context":227},102,{"file":148,"line":240,"context":227},105,{"file":148,"line":193,"context":227},{"file":148,"line":243,"context":227},119,{"file":148,"line":245,"context":227},126,{"file":148,"line":247,"context":227},127,{"file":148,"line":249,"context":227},135,{"file":148,"line":251,"context":227},136,{"file":148,"line":253,"context":227},144,{"file":148,"line":255,"context":227},147,{"file":148,"line":257,"context":227},150,{"file":148,"line":259,"context":227},153,{"file":148,"line":261,"context":227},156,{"file":148,"line":263,"context":227},165,{"file":148,"line":265,"context":227},174,{"file":148,"line":267,"context":227},191,{"file":148,"line":269,"context":227},205,{"file":148,"line":271,"context":227},213,{"file":148,"line":273,"context":227},223,{"file":148,"line":275,"context":227},237,{"file":148,"line":277,"context":227},240,{"file":148,"line":279,"context":227},244,{"file":148,"line":281,"context":227},254,{"file":148,"line":283,"context":227},261,{"file":148,"line":285,"context":227},262,{"file":148,"line":287,"context":227},270,{"file":148,"line":202,"context":227},{"file":148,"line":290,"context":227},279,{"file":148,"line":292,"context":227},282,{"file":148,"line":294,"context":227},285,{"file":148,"line":296,"context":227},288,{"file":148,"line":298,"context":227},302,{"file":148,"line":300,"context":227},316,{"file":148,"line":302,"context":227},324,{"file":148,"line":304,"context":227},332,{"file":148,"line":306,"context":227},346,{"file":148,"line":308,"context":227},350,{"file":148,"line":310,"context":227},353,{"file":148,"line":312,"context":227},358,{"file":148,"line":314,"context":227},368,{"file":148,"line":316,"context":227},370,{"file":148,"line":318,"context":227},380,{"file":148,"line":320,"context":227},387,{"file":148,"line":322,"context":227},389,{"file":148,"line":324,"context":227},398,{"file":171,"line":326,"context":227},49,{"file":171,"line":328,"context":227},53,{"file":171,"line":330,"context":227},61,{"file":171,"line":332,"context":227},69,{"file":171,"line":334,"context":227},79,{"file":171,"line":336,"context":227},83,{"file":171,"line":338,"context":227},93,{"file":171,"line":340,"context":227},98,{"file":171,"line":342,"context":227},125,{"file":171,"line":344,"context":227},149,{"file":171,"line":259,"context":227},{"file":171,"line":347,"context":227},161,{"file":171,"line":263,"context":227},{"file":171,"line":350,"context":227},170,{"file":171,"line":352,"context":227},175,{"file":171,"line":354,"context":227},188,{"file":171,"line":356,"context":227},192,{"file":171,"line":35,"context":227},{"file":171,"line":359,"context":227},224,{"file":171,"line":361,"context":227},228,{"file":171,"line":275,"context":227},{"file":171,"line":364,"context":227},247,{"file":171,"line":366,"context":227},253,{"file":171,"line":283,"context":227},{"file":171,"line":369,"context":227},267,{"file":171,"line":371,"context":227},281,{"file":171,"line":373,"context":227},289,{"file":171,"line":375,"context":227},297,{"file":171,"line":377,"context":227},308,{"file":171,"line":379,"context":227},315,{"file":171,"line":381,"context":227},319,{"file":171,"line":383,"context":227},325,{"file":171,"line":385,"context":227},330,{"file":171,"line":387,"context":227},336,{"file":171,"line":389,"context":227},343,{"file":171,"line":306,"context":227},{"file":171,"line":308,"context":227},{"file":171,"line":393,"context":227},356,{"file":171,"line":395,"context":227},361,{"file":171,"line":397,"context":227},367,{"file":171,"line":399,"context":227},374,{"file":171,"line":401,"context":227},377,{"file":171,"line":403,"context":227},381,{"file":171,"line":320,"context":227},{"file":171,"line":406,"context":227},392,{"file":171,"line":324,"context":227},{"file":171,"line":409,"context":227},405,{"file":171,"line":411,"context":227},409,{"file":171,"line":413,"context":227},415,{"file":171,"line":415,"context":227},420,{"file":171,"line":417,"context":227},426,{"file":171,"line":419,"context":227},434,{"file":171,"line":421,"context":227},442,{"file":171,"line":423,"context":227},446,{"file":171,"line":425,"context":227},452,{"file":171,"line":427,"context":227},457,{"file":171,"line":429,"context":227},463,{"file":171,"line":431,"context":227},468,{"file":171,"line":433,"context":227},479,{"file":171,"line":435,"context":227},487,{"file":171,"line":437,"context":227},491,{"file":171,"line":439,"context":227},497,{"file":171,"line":441,"context":227},502,{"file":171,"line":443,"context":227},508,{"file":171,"line":445,"context":227},515,{"file":171,"line":447,"context":227},519,{"file":171,"line":449,"context":227},525,{"file":171,"line":451,"context":227},530,{"file":171,"line":453,"context":227},536,{"file":171,"line":455,"context":227},641,{"file":171,"line":457,"context":227},647,{"file":171,"line":459,"context":227},650,{"file":171,"line":461,"context":227},653,{"file":171,"line":463,"context":227},656,{"file":171,"line":465,"context":227},659,{"file":171,"line":467,"context":227},662,{"file":171,"line":469,"context":227},670,5,4,[473],{"name":474,"version":475,"knownCves":476},"Freemius","1.0",[],[],{"summary":479,"deductions":480},"The \"better-coupon-restrictions\" plugin v1.0.4 exhibits a generally good security posture based on the provided static analysis and vulnerability history. The plugin has no recorded CVEs and adheres to several WordPress security best practices, including the exclusive use of prepared statements for SQL queries and the implementation of nonce and capability checks.  The limited attack surface, with only one AJAX handler and no shortcodes, cron events, or REST API routes, further contributes to its apparent security. However, a significant concern is the 50% rate of improperly escaped output. This indicates a potential for Cross-Site Scripting (XSS) vulnerabilities if user-supplied data is directly rendered without proper sanitization. While taint analysis shows no flows with unsanitized paths, this could be due to the limited scope of the analysis or the specific nature of the plugin's operations. The absence of known vulnerabilities in its history is a positive sign, suggesting a responsible development approach, but it doesn't negate the risks identified in the static analysis.",[481],{"reason":482,"points":149},"Half of outputs are not properly escaped","2026-03-16T22:22:22.542Z",{"wat":485,"direct":493},{"assetPaths":486,"generatorPatterns":490,"scriptPaths":491,"versionParams":492},[487,488,489],"\u002Fwp-content\u002Fplugins\u002Fbetter-coupon-restrictions\u002Fjs\u002Fadmin-scripts.js","\u002Fwp-content\u002Fplugins\u002Fbetter-coupon-restrictions\u002Fjs\u002Fproducts-dropdown.js","\u002Fwp-content\u002Fplugins\u002Fbetter-coupon-restrictions\u002Fcss\u002Fadmin-styles.css",[],[487,488],[],{"cssClasses":494,"htmlComments":495,"htmlAttributes":496,"restEndpoints":502,"jsGlobals":503,"shortcodeOutput":505},[146],[],[497,498,499,500,501],"name=\"bcrw_enable_product_restrictions\"","name=\"bcrw_product_conditions\"","name=\"bcrw_products[]\"","name=\"bcrw_category_conditions\"","name=\"bcrw_categories[]\"",[],[504],"bcrwAjax",[],{"error":211,"url":507,"statusCode":508,"statusMessage":509,"message":509},"http:\u002F\u002Flocalhost\u002Fapi\u002Fplugins\u002Fbetter-coupon-restrictions\u002Fbundle",404,"no bundle for this plugin yet",{"slug":4,"current_version":6,"total_versions":216,"versions":511},[512],{"version":6,"download_url":24,"svn_tag_url":513,"released_at":26,"has_diff":209,"diff_files_changed":514,"diff_lines":26,"trac_diff_url":26,"vulnerabilities":515,"is_current":211},"https:\u002F\u002Fplugins.svn.wordpress.org\u002Fbetter-coupon-restrictions\u002Ftags\u002F1.0.4\u002F",[],[]]