{"id":234246,"date":"2025-05-21T07:17:57","date_gmt":"2025-05-21T07:17:57","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/simple-role-based-pricing\/"},"modified":"2026-08-27T13:52:03","modified_gmt":"2026-08-27T13:52:03","slug":"simple-role-based-pricing","status":"publish","type":"plugin","link":"https:\/\/bho.wordpress.org\/plugins\/simple-role-based-pricing\/","author":22011295,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.6.0","stable_tag":"2.6.0","tested":"7.1","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"Simple Role Based Pricing","header_author":"tlloancy","header_description":"A lightweight plugin to set role-based pricing for WooCommerce products.","assets_banners_color":"c8bfd3","last_updated":"2026-08-27 13:52:03","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":30,"downloads":4490,"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":"tlloancy","date":"2025-05-21 07:17:25","revision":3297813},"1.0.1":{"tag":"1.0.1","author":"tlloancy","date":"2025-05-24 19:26:54","revision":3299995},"1.0.2":{"tag":"1.0.2","author":"tlloancy","date":"2025-05-24 20:22:52","revision":3300019},"1.0.3":{"tag":"1.0.3","author":"tlloancy","date":"2025-05-24 23:22:45","revision":3300051},"1.0.4":{"tag":"1.0.4","author":"tlloancy","date":"2025-05-25 00:21:35","revision":3300056},"1.0.5":{"tag":"1.0.5","author":"tlloancy","date":"2025-06-13 13:01:11","revision":3311093},"1.0.6":{"tag":"1.0.6","author":"tlloancy","date":"2025-07-01 04:20:30","revision":3320288},"1.0.7":{"tag":"1.0.7","author":"tlloancy","date":"2025-07-01 04:22:23","revision":3320289},"1.0.8":{"tag":"1.0.8","author":"tlloancy","date":"2025-08-21 13:42:57","revision":3348171},"1.0.9":{"tag":"1.0.9","author":"tlloancy","date":"2025-08-21 19:38:46","revision":3348333},"1.1.0":{"tag":"1.1.0","author":"tlloancy","date":"2025-08-22 14:21:40","revision":3348691},"1.1.1":{"tag":"1.1.1","author":"tlloancy","date":"2025-08-22 21:20:47","revision":3348821},"1.1.2":{"tag":"1.1.2","author":"tlloancy","date":"2025-08-22 22:54:52","revision":3348832},"1.1.3":{"tag":"1.1.3","author":"tlloancy","date":"2025-08-26 14:49:39","revision":3350516},"1.1.4":{"tag":"1.1.4","author":"tlloancy","date":"2025-08-29 14:51:38","revision":3352699},"1.1.6":{"tag":"1.1.6","author":"tlloancy","date":"2025-08-30 22:50:31","revision":3353181},"1.1.7":{"tag":"1.1.7","author":"tlloancy","date":"2025-11-01 14:54:33","revision":3388139},"1.1.8":{"tag":"1.1.8","author":"tlloancy","date":"2026-03-10 05:29:52","revision":3478753},"1.1.9":{"tag":"1.1.9","author":"tlloancy","date":"2026-03-13 00:30:46","revision":3481595},"1.2.0":{"tag":"1.2.0","author":"tlloancy","date":"2026-04-02 21:13:52","revision":3497830},"1.2.1":{"tag":"1.2.1","author":"tlloancy","date":"2026-04-02 22:58:39","revision":3497873},"1.2.2":{"tag":"1.2.2","author":"tlloancy","date":"2026-04-03 13:16:58","revision":3498262},"2.0.0":{"tag":"2.0.0","author":"tlloancy","date":"2026-04-30 12:55:54","revision":3519534},"2.0.1":{"tag":"2.0.1","author":"tlloancy","date":"2026-04-30 19:41:01","revision":3519935},"2.0.2":{"tag":"2.0.2","author":"tlloancy","date":"2026-04-30 20:14:11","revision":3519956},"2.0.3":{"tag":"2.0.3","author":"tlloancy","date":"2026-04-30 20:41:14","revision":3519972},"2.1.0":{"tag":"2.1.0","author":"tlloancy","date":"2026-05-02 09:03:12","revision":3520802},"2.1.1":{"tag":"2.1.1","author":"tlloancy","date":"2026-05-03 23:32:32","revision":3521820},"2.1.2":{"tag":"2.1.2","author":"tlloancy","date":"2026-05-04 00:46:29","revision":3521848},"2.2.0":{"tag":"2.2.0","author":"tlloancy","date":"2026-05-05 04:56:02","revision":3522914},"2.3.0":{"tag":"2.3.0","author":"tlloancy","date":"2026-05-24 00:39:15","revision":3545699},"2.3.1":{"tag":"2.3.1","author":"tlloancy","date":"2026-05-24 01:06:12","revision":3545705},"2.3.2":{"tag":"2.3.2","author":"tlloancy","date":"2026-05-24 01:29:21","revision":3545712},"2.3.3":{"tag":"2.3.3","author":"tlloancy","date":"2026-05-24 01:37:57","revision":3545716},"2.3.4":{"tag":"2.3.4","author":"tlloancy","date":"2026-05-24 02:00:43","revision":3545726},"2.3.5":{"tag":"2.3.5","author":"tlloancy","date":"2026-05-24 02:38:06","revision":3545743},"2.3.7":{"tag":"2.3.7","author":"tlloancy","date":"2026-05-24 13:08:07","revision":3546271},"2.3.8":{"tag":"2.3.8","author":"tlloancy","date":"2026-05-24 16:39:55","revision":3546431},"2.4.0":{"tag":"2.4.0","author":"tlloancy","date":"2026-05-24 18:45:18","revision":3546526},"2.5.0":{"tag":"2.5.0","author":"tlloancy","date":"2026-08-27 12:39:33","revision":3668848},"2.6.0":{"tag":"2.6.0","author":"tlloancy","date":"2026-08-27 13:52:03","revision":3668980}},"upgrade_notice":{"2.6.0":"<p>Layout map moved below the form. Optional AI field and abilities on WordPress 6.9+. Pricing engine unchanged.<\/p>","2.5.0":"<p>WordPress 7.1 and WooCommerce 11.0. Listing and FAQ updated. Pricing engine unchanged.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3297813,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3297813,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.0.3","1.0.4","1.0.5","1.0.6","1.0.7","1.0.8","1.0.9","1.1.0","1.1.1","1.1.2","1.1.3","1.1.4","1.1.6","1.1.7","1.1.8","1.1.9","1.2.0","1.2.1","1.2.2","2.0.0","2.0.1","2.0.2","2.0.3","2.1.0","2.1.1","2.1.2","2.2.0","2.3.0","2.3.1","2.3.2","2.3.3","2.3.4","2.3.5","2.3.7","2.3.8","2.4.0","2.5.0","2.6.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3297813,"resolution":"1","location":"assets","locale":"","width":1912,"height":1117},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3297813,"resolution":"2","location":"assets","locale":"","width":2004,"height":1066},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3297813,"resolution":"3","location":"assets","locale":"","width":1838,"height":882}},"screenshots":{"1":"Role settings: enable a rule, choose all products or categories, set the discount.","2":"Category picker with per-category type and value.","3":"Overview of every role, including schedule status."}},"plugin_section":[],"plugin_tags":[6744,146113,139401,65073,286],"plugin_category":[45],"plugin_contributors":[232640],"plugin_business_model":[],"class_list":["post-234246","plugin","type-plugin","status-publish","hentry","plugin_tags-discounts","plugin_tags-prices-by-user-role","plugin_tags-role-based-pricing","plugin_tags-wholesale-pricing","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-tlloancy","plugin_committers-tlloancy"],"banners":{"banner":"https:\/\/ps.w.org\/simple-role-based-pricing\/assets\/banner-772x250.png?rev=3297813","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/simple-role-based-pricing\/assets\/icon-128x128.png?rev=3297813","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/simple-role-based-pricing\/assets\/screenshot-1.png?rev=3297813","caption":"Role settings: enable a rule, choose all products or categories, set the discount."},{"src":"https:\/\/ps.w.org\/simple-role-based-pricing\/assets\/screenshot-2.png?rev=3297813","caption":"Category picker with per-category type and value."},{"src":"https:\/\/ps.w.org\/simple-role-based-pricing\/assets\/screenshot-3.png?rev=3297813","caption":"Overview of every role, including schedule status."}],"raw_content":"<!--section=description-->\n<p>Pick a role. Choose how the price works. Save.<\/p>\n\n<p>That is the whole daily job. Wholesale, VIP, members, staff \u2014 one screen under <strong>WooCommerce \u2192 Settings \u2192 Role Based Pricing<\/strong>.<\/p>\n\n<p>Pricing itself is rarely that tidy. A product can sit in several categories, a user can have more than one role, a sale price may already be running, a wholesaler may need an exception, a campaign may start next Monday. The plugin handles those cases so you do not have to stack extra tools.<\/p>\n\n<h4>What you set<\/h4>\n\n<ul>\n<li><strong>Percentage<\/strong>, <strong>fixed amount<\/strong>, or a <strong>final price<\/strong> for a WordPress user role.<\/li>\n<li><strong>All products<\/strong>, or only selected <strong>categories<\/strong> \u2014 with a different type\/value per category if you need it.<\/li>\n<li>Optional <strong>start and end dates<\/strong>. Leave them empty for a permanent rule.<\/li>\n<li>Optional <strong>per-user override<\/strong> on the WordPress profile. That price wins over the role rule.<\/li>\n<\/ul>\n\n<h4>What the storefront does<\/h4>\n\n<ul>\n<li>Logged-in customers see the role price on the shop, the product page, and in the cart.<\/li>\n<li>Guests keep the catalog price.<\/li>\n<li>Variable products: the discount applies to each variation; WooCommerce still owns the parent price range.<\/li>\n<li>If a product is already on a native WooCommerce sale, that sale wins. The role rule does not stack on top.<\/li>\n<li>Cart totals refresh when the customer logs in, so a guest cart picks up the role price after sign-in.<\/li>\n<li>The admin catalog and REST exports keep the original prices.<\/li>\n<\/ul>\n\n<h4>Typical uses<\/h4>\n\n<ul>\n<li>A wholesale role at \u221220% on the whole catalog.<\/li>\n<li>Members-only prices on a few categories, with a different rate on one of them.<\/li>\n<li>A campaign window for staff or partners, without touching product sale fields.<\/li>\n<li>One customer who should not follow their role \u2014 set it on their user profile.<\/li>\n<\/ul>\n\n<h4>AI ready<\/h4>\n\n<p>On WordPress 6.9 or later the plugin registers three Abilities so an assistant (official <a href=\"https:\/\/wordpress.org\/plugins\/ai\/\">AI<\/a> plugin + a connector) can set, read, or remove a role discount. On the same <strong>Role Based Pricing<\/strong> screen, a text field and <strong>Generate<\/strong> button do the same from a sentence when that plugin is installed. Both still require the <strong>manage WooCommerce<\/strong> capability. Older WordPress versions skip the Abilities; the settings screen stays usable without AI.<\/p>\n\n<p>A longer walkthrough ships in the plugin folder: <code>docs\/USER-GUIDE.md<\/code> (English) and <code>docs\/MODE-DEMPLOI.md<\/code> (French).<\/p>\n\n<h4>Compatibility<\/h4>\n\n<ul>\n<li><strong>WooCommerce<\/strong> 8.0 or higher (tested up to 11.0).<\/li>\n<li><strong>HPOS<\/strong> (High-Performance Order Storage) compatible.<\/li>\n<li>Custom roles from User Role Editor and similar plugins work as-is: if WordPress knows the role, this plugin can price it.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate <strong>WooCommerce<\/strong>.<\/li>\n<li>Upload the plugin, or install it from <strong>Plugins \u2192 Add New<\/strong>.<\/li>\n<li>Activate <strong>Simple Role Based Pricing<\/strong>.<\/li>\n<li>Open <strong>WooCommerce \u2192 Settings \u2192 Role Based Pricing<\/strong>.<\/li>\n<li>Select a role, turn the rule on, set the discount, save.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20are%20the%20settings%3F\"><h3>Where are the settings?<\/h3><\/dt>\n<dd><p>WooCommerce \u2192 Settings \u2192 Role Based Pricing. Select the role first. Everything else on the page is for that role until you save.<\/p><\/dd>\n<dt id=\"what%20is%20the%20difference%20between%20the%20three%20discount%20types%3F\"><h3>What is the difference between the three discount types?<\/h3><\/dt>\n<dd><ul>\n<li><strong>Percentage<\/strong> \u2014 off the regular price (20 = 20% off).<\/li>\n<li><strong>Fixed amount<\/strong> \u2014 subtract that amount in your store currency.<\/li>\n<li><strong>Fixed price<\/strong> \u2014 the customer pays exactly that amount, regardless of the catalog price.<\/li>\n<\/ul><\/dd>\n<dt id=\"can%20i%20limit%20a%20rule%20to%20some%20categories%3F\"><h3>Can I limit a rule to some categories?<\/h3><\/dt>\n<dd><p>Yes. Set <strong>Apply To<\/strong> to <strong>Specific Categories<\/strong>, pick the categories, save. Each selected category can use the role default (<strong>Global<\/strong>) or its own type and value.<\/p><\/dd>\n<dt id=\"who%20wins%20if%20several%20rules%20could%20apply%3F\"><h3>Who wins if several rules could apply?<\/h3><\/dt>\n<dd><ol>\n<li>A native WooCommerce sale price on the product.<\/li>\n<li>An individual price on the user profile.<\/li>\n<li>A matching category rule for that role.<\/li>\n<li>The role\u2019s \u201call products\u201d rule.<\/li>\n<\/ol>\n\n<p>Guests are not priced. Empty start\/end dates mean the rule has no schedule.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20variable%20products%3F\"><h3>Does it work with variable products?<\/h3><\/dt>\n<dd><p>Yes. Each variation is priced. The parent product keeps WooCommerce\u2019s min\u2013max range.<\/p><\/dd>\n<dt id=\"can%20i%20give%20one%20user%20a%20different%20price%20than%20their%20role%3F\"><h3>Can I give one user a different price than their role?<\/h3><\/dt>\n<dd><p>Yes. Edit the user under <strong>Users<\/strong>, then <strong>Simple Role Based Pricing - Individual<\/strong>. That override beats the role rule for that account.<\/p><\/dd>\n<dt id=\"why%20didn%E2%80%99t%20the%20role%20discount%20apply%20to%20a%20product%20on%20sale%3F\"><h3>Why didn\u2019t the role discount apply to a product on sale?<\/h3><\/dt>\n<dd><p>On purpose. If WooCommerce already has a sale price, the plugin leaves it. End the sale, or use a product that is not on sale, if the role price should show.<\/p><\/dd>\n<dt id=\"do%20i%20need%20extra%20php%20extensions%3F\"><h3>Do I need extra PHP extensions?<\/h3><\/dt>\n<dd><p>No. PHP 7.4+ and WooCommerce 8.0+ are enough. There is no mbstring requirement.<\/p><\/dd>\n<dt id=\"can%20i%20control%20pricing%20with%20ai%3F\"><h3>Can I control pricing with AI?<\/h3><\/dt>\n<dd><p>Yes, on WordPress 6.9 or later. Install the official AI plugin and a connector. On <strong>WooCommerce \u2192 Settings \u2192 Role Based Pricing<\/strong>, use the text field and <strong>Generate<\/strong>. A user who can <strong>manage WooCommerce<\/strong> can also ask the assistant to set, read, or remove a role discount. Without the AI plugin, the rest of the screen is unchanged.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.6.0 (2026-08-27)<\/h4>\n\n<ul>\n<li>AI: Three Abilities (set, get, remove role discounts) for WordPress 6.9+ and the official AI plugin.<\/li>\n<li>Admin: Optional Generate field on the Role Based Pricing screen (connector \/ parse \/ save, then a rule from a sentence).<\/li>\n<li>Admin: Page layout map moved below the form so Select Role \/ Enable \/ discount come first.<\/li>\n<li>Docs: User guides cover AI phrases; layout map is optional and stays collapsed.<\/li>\n<\/ul>\n\n<h4>2.5.0 (2026-08-27)<\/h4>\n\n<ul>\n<li>Compatibility: Tested with WordPress 7.1 and WooCommerce 11.0.<\/li>\n<li>Docs: Listing and FAQ rewritten to match the plugin. English and French guides in <code>docs\/<\/code>.<\/li>\n<\/ul>\n\n<h4>2.4.0 (2026-05-24)<\/h4>\n\n<ul>\n<li>Admin layout map and block order: drag to rearrange settings, order saved per user.<\/li>\n<\/ul>\n\n<h4>2.3.0 (2026-05-24)<\/h4>\n\n<ul>\n<li>Settings workspace: collapsible blocks, per-role Apply To, rule status, unsaved-changes warning.<\/li>\n<\/ul>\n\n<h4>2.2.0 (2026-05-05)<\/h4>\n\n<ul>\n<li>Removed the mbstring requirement.<\/li>\n<\/ul>\n\n<h4>2.1.0 (2026-05-02)<\/h4>\n\n<ul>\n<li>Per-category discounts and optional start\/end dates. Rules stored as JSON.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Native WooCommerce price filters (no fake coupon). Per-user price override on the profile.<\/li>\n<\/ul>\n\n<p>Older patch notes (including 2.3.1\u20132.3.8) are in <code>changelog.txt<\/code>.<\/p>","raw_excerpt":"Set a WooCommerce price per user role: percentage, fixed amount, or a final price. Categories, dates, and per-user exceptions stay optional.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bho.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/234246","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bho.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/bho.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/bho.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=234246"}],"author":[{"embeddable":true,"href":"https:\/\/bho.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/tlloancy"}],"wp:attachment":[{"href":"https:\/\/bho.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=234246"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/bho.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=234246"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/bho.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=234246"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/bho.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=234246"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/bho.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=234246"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/bho.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=234246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}