{"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-05-24T18:45:18","modified_gmt":"2026-05-24T18:45:18","slug":"simple-role-based-pricing","status":"publish","type":"plugin","link":"https:\/\/zgh.wordpress.org\/plugins\/simple-role-based-pricing\/","author":22011295,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.4.0","stable_tag":"2.4.0","tested":"7.0","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-05-24 18:45:18","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":10,"downloads":3884,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"tlloancy","date":"2025-05-21 07:17:25"},"1.0.1":{"tag":"1.0.1","author":"tlloancy","date":"2025-05-24 19:26:54"},"1.0.2":{"tag":"1.0.2","author":"tlloancy","date":"2025-05-24 20:22:52"},"1.0.3":{"tag":"1.0.3","author":"tlloancy","date":"2025-05-24 23:22:45"},"1.0.4":{"tag":"1.0.4","author":"tlloancy","date":"2025-05-25 00:21:35"},"1.0.5":{"tag":"1.0.5","author":"tlloancy","date":"2025-06-13 13:01:11"},"1.0.6":{"tag":"1.0.6","author":"tlloancy","date":"2025-07-01 04:20:30"},"1.0.7":{"tag":"1.0.7","author":"tlloancy","date":"2025-07-01 04:22:23"},"1.0.8":{"tag":"1.0.8","author":"tlloancy","date":"2025-08-21 13:42:57"},"1.0.9":{"tag":"1.0.9","author":"tlloancy","date":"2025-08-21 19:38:46"},"1.1.0":{"tag":"1.1.0","author":"tlloancy","date":"2025-08-22 14:21:40"},"1.1.1":{"tag":"1.1.1","author":"tlloancy","date":"2025-08-22 21:20:47"},"1.1.2":{"tag":"1.1.2","author":"tlloancy","date":"2025-08-22 22:54:52"},"1.1.3":{"tag":"1.1.3","author":"tlloancy","date":"2025-08-26 14:49:39"},"1.1.4":{"tag":"1.1.4","author":"tlloancy","date":"2025-08-29 14:51:38"},"1.1.6":{"tag":"1.1.6","author":"tlloancy","date":"2025-08-30 22:50:31"},"1.1.7":{"tag":"1.1.7","author":"tlloancy","date":"2025-11-01 14:54:33"},"1.1.8":{"tag":"1.1.8","author":"tlloancy","date":"2026-03-10 05:29:52"},"1.1.9":{"tag":"1.1.9","author":"tlloancy","date":"2026-03-13 00:30:46"},"1.2.0":{"tag":"1.2.0","author":"tlloancy","date":"2026-04-02 21:13:52"},"1.2.1":{"tag":"1.2.1","author":"tlloancy","date":"2026-04-02 22:58:39"},"1.2.2":{"tag":"1.2.2","author":"tlloancy","date":"2026-04-03 13:16:58"},"2.0.0":{"tag":"2.0.0","author":"tlloancy","date":"2026-04-30 12:55:54"},"2.0.1":{"tag":"2.0.1","author":"tlloancy","date":"2026-04-30 19:41:01"},"2.0.2":{"tag":"2.0.2","author":"tlloancy","date":"2026-04-30 20:14:11"},"2.0.3":{"tag":"2.0.3","author":"tlloancy","date":"2026-04-30 20:41:14"},"2.1.0":{"tag":"2.1.0","author":"tlloancy","date":"2026-05-02 09:03:12"},"2.1.1":{"tag":"2.1.1","author":"tlloancy","date":"2026-05-03 23:32:32"},"2.1.2":{"tag":"2.1.2","author":"tlloancy","date":"2026-05-04 00:46:29"},"2.2.0":{"tag":"2.2.0","author":"tlloancy","date":"2026-05-05 04:56:02"},"2.3.0":{"tag":"2.3.0","author":"tlloancy","date":"2026-05-24 00:39:15"},"2.3.1":{"tag":"2.3.1","author":"tlloancy","date":"2026-05-24 01:06:12"},"2.3.2":{"tag":"2.3.2","author":"tlloancy","date":"2026-05-24 01:29:21"},"2.3.3":{"tag":"2.3.3","author":"tlloancy","date":"2026-05-24 01:37:57"},"2.3.4":{"tag":"2.3.4","author":"tlloancy","date":"2026-05-24 02:00:43"},"2.3.5":{"tag":"2.3.5","author":"tlloancy","date":"2026-05-24 02:38:06"},"2.3.7":{"tag":"2.3.7","author":"tlloancy","date":"2026-05-24 13:08:07"},"2.3.8":{"tag":"2.3.8","author":"tlloancy","date":"2026-05-24 16:39:55"},"2.4.0":{"tag":"2.4.0","author":"tlloancy","date":"2026-05-24 18:45:18"}},"upgrade_notice":[],"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"],"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":[]},"plugin_section":[],"plugin_tags":[6744,139401,11917,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-role-based-pricing","plugin_tags-user-roles","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":""},{"src":"https:\/\/ps.w.org\/simple-role-based-pricing\/assets\/screenshot-2.png?rev=3297813","caption":""},{"src":"https:\/\/ps.w.org\/simple-role-based-pricing\/assets\/screenshot-3.png?rev=3297813","caption":""}],"raw_content":"<!--section=description-->\n<p>Simple Role Based Pricing is a lightweight and flexible WooCommerce plugin that allows you to set custom prices or discounts for products based on user roles. Configure global pricing rules, restrict discounts to specific product categories, apply bulk actions, or set role-specific prices per product with Quick Edit support. The plugin ensures robust pricing logic with category-based restrictions and detailed debug logging for troubleshooting.<\/p>\n\n<h3>Key Features<\/h3>\n\n<ul>\n<li><strong>Role-Based Pricing<\/strong>: Set fixed prices, percentage discounts, or fixed-amount discounts for specific user roles.<\/li>\n<li><strong>Category Restrictions<\/strong>: Apply discounts only to products in selected categories (e.g., \"storage\").<\/li>\n<li><strong>Global Rules<\/strong>: Define pricing rules for all products or specific categories in WooCommerce Settings.<\/li>\n<li><strong>Bulk Editing<\/strong>: Adjust prices for multiple products at once.<\/li>\n<li><strong>Quick Edit Support<\/strong>: Set role-based prices directly from the product list.<\/li>\n<li><strong>Flexible Compatibility<\/strong>: Works with simple and variable WooCommerce products.<\/li>\n<li><strong>Admin workspace<\/strong>: Block-based settings with a draggable <strong>Plan minimap<\/strong>, collapsible sections, and per-user saved block order.<\/li>\n<li><strong>Debug Logging<\/strong>: Detailed logs for troubleshooting pricing issues, including category matching.<\/li>\n<\/ul>\n\n<h3>Use Cases<\/h3>\n\n<ul>\n<li>Offer exclusive discounts to VIP customers or wholesalers.<\/li>\n<li>Restrict discounts to specific product categories for certain roles.<\/li>\n<li>Create role-specific pricing for B2B or B2C customers.<\/li>\n<\/ul>\n\n<h3>Compatibility<\/h3>\n\n<ul>\n<li><strong>WooCommerce<\/strong>: Required (version 4.0 or higher recommended).<\/li>\n<li><strong>User Role Editor<\/strong>: Optional, for managing custom user roles.<\/li>\n<li><strong>Other Role Management Plugins<\/strong>: Compatible with plugins that add custom roles to WordPress.<\/li>\n<li><strong>Themes<\/strong>: Tested with popular themes like Twenty Twenty-Five and Astra.<\/li>\n<\/ul>\n\n<h3>Configuration<\/h3>\n\n<ol>\n<li><strong>Global Rules<\/strong>:\n\n<ul>\n<li>Navigate to <strong>WooCommerce &gt; Settings &gt; Role Based Pricing<\/strong>.<\/li>\n<li>Select a user role (e.g., Administrator, Customer).<\/li>\n<li>Choose whether to apply pricing to <strong>All Products<\/strong> or <strong>Specific Categories<\/strong>.<\/li>\n<li>Set the discount type (Percentage, Fixed Amount, or Fixed Price) and value.<\/li>\n<li>Save changes to apply the rules site-wide.<\/li>\n<li>Use the <strong>Plan minimap<\/strong> (right column on wide screens) to reorder blocks; order is saved automatically per user.<\/li>\n<\/ul><\/li>\n<li><strong>Category Restrictions<\/strong>:\n\n<ul>\n<li>Select <strong>Specific Categories<\/strong> and choose the desired product categories (e.g., \"storage\").<\/li>\n<li>Only products in these categories will receive the discount for the specified role.<\/li>\n<\/ul><\/li>\n<li><strong>Per-Product Pricing<\/strong>:\n\n<ul>\n<li>Edit a product and use the <strong>Quick Edit<\/strong> option to set role-specific prices.<\/li>\n<li>Alternatively, configure prices in the product\u2019s <strong>Role Based Pricing<\/strong> settings.<\/li>\n<\/ul><\/li>\n<\/ol>\n\n<h3>Debugging<\/h3>\n\n<ul>\n<li>The plugin includes detailed debug logging to troubleshoot pricing issues.<\/li>\n<li>Logs are stored in <code>\/wp-content\/uploads\/simple-role-based-pricing\/simproba-debug.log<\/code>.<\/li>\n<li>To view logs:\n  <code>bash\ntail -n 200 \/var\/www\/html\/wordpress\/wp-content\/uploads\/simple-role-based-pricing\/simproba-debug.log<\/code><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>simple-role-based-pricing<\/code> folder 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; Role Based Pricing<\/strong> to configure global pricing rules.<\/li>\n<li>Optionally, edit individual products to set role-specific prices via Quick Edit or the product settings.<\/li>\n<\/ol>\n\n<!--section=changelog-->\n<h4>2.4.0 (2026-05-24)<\/h4>\n\n<ul>\n<li>Fixed: Plan minimap stays synced with block order and persists across page reloads (single blockOrder source of truth).<\/li>\n<li>Fixed: Reordering in the Plan updates the real block layout (including moving All Products \/ Specific Categories into the stack when it is not first in the plan).<\/li>\n<li>Fixed: Block order AJAX save uses proper JSON decoding.<\/li>\n<li>Added: Minimap-style Plan panel with draggable previews reflecting block size and collapsed state.<\/li>\n<li>Added: Full-width page layout map above the form (wireframe like a 33% zoom of the page); contextual sidebar for role \/ apply-to only.<\/li>\n<li>Added: Fractal block previews (overview table, category lists, etc.) and visible empty column slots.<\/li>\n<li>Added: Visible empty slots (dashed areas) and stack drop zones for clearer drag targets.<\/li>\n<li>Added: Reorder blocks by dragging chips on the layout map, not only a flat list.<\/li>\n<li>Added: Layout map folded by default; expand when you need to reorder blocks.<\/li>\n<li>Fixed: All Products can be moved back into the top column from the stack.<\/li>\n<li>Added: Context sidebar lists blocks for quick jump (reorder via layout map only).<\/li>\n<li>Changed: Top column for All Products only when explicitly dropped there; first stack position keeps the column empty.<\/li>\n<li>Fixed: Stack-only All Products layout persists after refresh (pinned state saved even when order array unchanged).<\/li>\n<\/ul>\n\n<h4>2.3.8 (2026-05-24)<\/h4>\n\n<ul>\n<li>Fixed: On wide screens, Specific Categories block offset 72px below Select Role so Select2 dropdown stays visible.<\/li>\n<\/ul>\n\n<h4>2.3.7 (2026-05-24)<\/h4>\n\n<ul>\n<li>Fixed: Planning Start\/End dates both visible on mobile (stacked layout, full-width datetime inputs).<\/li>\n<\/ul>\n\n<h4>2.3.6 (2026-05-24)<\/h4>\n\n<ul>\n<li>Fixed: Responsive layout for Apply To \/ Specific Categories (top row, category lists, selected category rows).<\/li>\n<\/ul>\n\n<h4>2.3.5 (2026-05-24)<\/h4>\n\n<ul>\n<li><strong>Fix<\/strong>: All Products discounts were not applied on the storefront (PriceCalculator now reads discount data from the <code>global<\/code> JSON structure).<\/li>\n<li><strong>Fix<\/strong>: Category rules with type Global now correctly inherit the role default discount.<\/li>\n<li><strong>Fix<\/strong>: Default discount type and value fields stay visible in Specific Categories mode (defines what Global means per category).<\/li>\n<\/ul>\n\n<h4>2.3.4 (2026-05-24)<\/h4>\n\n<ul>\n<li><strong>Fix<\/strong>: Clicking a category name in Selected Categories now selects the row (same as Available Categories).<\/li>\n<li><strong>Tweak<\/strong>: Category name shows pointer cursor in selected list.<\/li>\n<\/ul>\n\n<h4>2.3.3 (2026-05-24)<\/h4>\n\n<ul>\n<li>Bump: Readme version was still in 2.3.1.<\/li>\n<\/ul>\n\n<h4>2.3.2 (2026-05-24)<\/h4>\n\n<ul>\n<li>Fix 2.3.1: restore working Enable toggle (revert to 2.2.0 label pattern)<\/li>\n<\/ul>\n\n<h4>2.3.1 (2026-05-24)<\/h4>\n\n<ul>\n<li><strong>Fix<\/strong>: Enable toggle was not clickable after the 2.3.0 layout change (restored label association and full hit area on the switch).<\/li>\n<\/ul>\n\n<h4>2.3.0 (2026-05-24)<\/h4>\n\n<ul>\n<li><strong>Admin workspace<\/strong>: New block-based settings layout with collapsible sections, drag-and-drop reordering, and a sticky \u201cPlan\u201d sidebar for quicker navigation.<\/li>\n<li><strong>Clearer role setup<\/strong>: Removed the redundant \u201cRole configuration\u201d block. The Enable switch now sits directly under Select Role and Apply To.<\/li>\n<li><strong>Apply To\u2013driven UI<\/strong>: The main content block title follows your Apply To choice (All Products \/ Specific Categories). Discount type and value appear for All Products; the category picker appears for Specific Categories.<\/li>\n<li><strong>Per-role Apply To<\/strong>: Switching roles restores the correct Apply To value for that role.<\/li>\n<li><strong>Rule status badge<\/strong>: Live indicator next to Enable (Inactive, Active, Scheduled, Expired).<\/li>\n<li><strong>Unsaved changes<\/strong>: Warning when editing without saving; confirmation before switching roles.<\/li>\n<li><strong>Review notice<\/strong>: Optional WordPress.org review prompt after 30 days (dismissible).<\/li>\n<li><strong>Fix<\/strong>: Block order no longer corrupted after save (fixes broken admin UI after reload).<\/li>\n<li><strong>Fix<\/strong>: Single admin asset enqueue; settings description visible again.<\/li>\n<li><strong>Compatibility<\/strong>: Tested up to WordPress 7.0.<\/li>\n<\/ul>\n\n<h4>2.2.0 (2026-05-05)<\/h4>\n\n<ul>\n<li>Removal of the mbstring dependency \u2014 it was limiting and causing friction during activation<\/li>\n<\/ul>\n\n<h4>2.1.2 (2026-05-04)<\/h4>\n\n<ul>\n<li><strong>Internationalization Complete<\/strong>: All text strings are now properly prepared for translations (i18n). Ready for multiple languages.<\/li>\n<\/ul>\n\n<h4>2.1.1 (2026-05-03)<\/h4>\n\n<ul>\n<li><strong>Database Optimization<\/strong>: Fully deprecated the legacy SQL schema.<\/li>\n<li><strong>Data Migration<\/strong>: Successfully moved all standalone columns ('discount_type', 'discount_value', 'categories') into a unified 'rules' JSON blob.<\/li>\n<li><strong>Logic Fix<\/strong>: Corrected category name retrieval in the Overview table (no more \"ID: 1\" fallback).<\/li>\n<li><strong>Currency Support<\/strong>: Switched to native WooCommerce currency symbols for global compatibility.<\/li>\n<\/ul>\n\n<h4>2.1.0 (2026-05-02)<\/h4>\n\n<ul>\n<li><strong>Major Architecture Overhaul<\/strong>: Migrated data storage to a centralized JSON format for superior flexibility and future-proofing.<\/li>\n<li><strong>Smart Time-Based Rules<\/strong>: Introduced a scheduling system to define specific start and end dates for role-based discounts.<\/li>\n<li><strong>Per-Category Granularity<\/strong>: Enabled unique discount types and values for each category individually, independent of global role settings.<\/li>\n<li><strong>Advanced Admin Interface<\/strong>: Implemented a dynamic category selector with real-time JSON rule generation and improved UI feedback.<\/li>\n<li><strong>Optimized Pricing Engine<\/strong>: Refactored the calculation logic into a dedicated class for better performance and easier debugging.<\/li>\n<li><strong>Enhanced Data Integrity<\/strong>: The system now dynamically filters active rules based on date validity at the point of calculation.<\/li>\n<\/ul>\n\n<h4>2.0.3 (2026-04-30)<\/h4>\n\n<ul>\n<li>Improvement: Added a clear notice in the settings to explain how individual user price overrides work.<\/li>\n<\/ul>\n\n<h4>2.0.2 (2026-04-30)<\/h4>\n\n<ul>\n<li>UI: Added expandable category previews in the Role Overview table for better configuration tracking.<\/li>\n<\/ul>\n\n<h4>2.0.1 (2026-04-30)<\/h4>\n\n<ul>\n<li>Fix: Resolved role selector UI freeze caused by WooCommerce Select2 overlay. Bug present since 1.2.0 i'm truely sorry for didn't paying attention.<\/li>\n<li>Fix: Implemented jQuery-based event listeners to properly detect role changes when Select2 is active.<\/li>\n<li>Debug: Restored admin console logging to improve real-time troubleshooting of DOM interactions.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Major: Complete pricing engine refactor. Fully migrated from the \"Legacy Coupon\" system to a \"Native Filter\" architecture (improved performance and stability).<\/li>\n<li>New Feature: User-Specific Pricing (Granularity). You can now set custom discounts for individual users that override global role-based rules.<\/li>\n<li>Stability: Implemented an anti-loop static flag ($is_calculating) to prevent server crashes during recursive price calls.<\/li>\n<li>Compatibility: Added REST API and Admin-side detection to ensure prices remain original during data exports or back-office management.<\/li>\n<li>Logic: Improved conflict management. The plugin now automatically yields if a product is already on native sale or if an \"Individual use\" coupon is applied to the cart.<\/li>\n<li>Tweak: Tested and confirmed compatibility with WooCommerce 10.7 and WordPress 6.7.<\/li>\n<li>Cleanup: Conditionnal Class Loading and Removed redundant debug logs and optimized class loading for a lighter footprint.<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Fix: Add missing 'enable' column and move DB setup to activation.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Fix: Some console logs were badly commented.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Performance: Cleaned up all debug logs and console.log for production use.<\/li>\n<li>Fix: Added explicit WooCommerce activation check.<\/li>\n<li>Fix: Declared full High-Performance Order Storage (HPOS) compatibility.<\/li>\n<li>Fix: UI Overhaul - Removed custom background styles to match WooCommerce Native UI.<\/li>\n<\/ul>\n\n<h4>1.1.9<\/h4>\n\n<ul>\n<li>Made Specific Categories fully free and usable without Pro restrictions.<\/li>\n<\/ul>\n\n<h4>1.1.8<\/h4>\n\n<ul>\n<li>Improvement: Switched to modern WooCommerce pricing flow using native get_price filters for item prices, subtotals, and totals (no artificial coupon needed on WC &gt;= 3.2).<\/li>\n<li>Fix: Correct category handling for variable products (now uses $product-&gt;get_category_ids() instead of wp_get_post_terms on variation ID).<\/li>\n<li>Added: Automatic cart recalculation on user login to apply role-based prices if user logs in after adding items to cart.<\/li>\n<li>Added: Explicit set_price() calls on woocommerce_before_calculate_totals hook for maximum reliability.<\/li>\n<li>Changed: Coupon 'simproba_role_discount' is no longer created or applied on WooCommerce &gt;= 3.2 \u2192 cleaner checkout display (no mystery discount line).<\/li>\n<li>Tweak: Refactored pricing logic into a reusable method to reduce duplication and improve maintainability.<\/li>\n<li>Note: Fully backward compatible \u2013 coupon logic remains active only for very old WooCommerce versions (&lt; 3.2).<\/li>\n<\/ul>\n\n<h4>1.1.7<\/h4>\n\n<ul>\n<li>Changed: Long time deprecated ${var} by {$var} , stopping all related php 8+ warnings by the way<\/li>\n<\/ul>\n\n<h4>1.1.6<\/h4>\n\n<ul>\n<li>Added \/ Fixed: Discount wasn't applied at checkout. At all. So coupon method was applied for clearness.<\/li>\n<\/ul>\n\n<h4>1.1.4<\/h4>\n\n<ul>\n<li>Added: Pro version indicator for \"Specific Categories\" option in the Apply To selector, with a modern inline notification for free version users.<\/li>\n<\/ul>\n\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>Fixed: Css overstep beyond role-pricing tab + overthrow main woocommerce aspect with first rule<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<p>Table name interpolation is to be ignored.<\/p>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Fixed: Added missing translators comments in product-fields.php for internationalization.<\/li>\n<li>Fixed: Corrected SQL queries in multiple files to properly use $wpdb-&gt;prepare() without backticks.<\/li>\n<li>Fixed: Enhanced sanitization for $_POST categories input in admin-settings.php.<\/li>\n<li>Fixed: Replaced all %s strings that define tables names in prepared requests by identifier %i.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Fixed: Addressed security issues from QIT tests (data sanitization, SQL queries, nonces).<\/li>\n<li>Fixed: Corrected WordPress.org Plugin Check violations (internationalization, WP_Filesystem).<\/li>\n<li>Fixed: Corrected SQL syntax errors in database queries.<\/li>\n<li>Fixed: Improved log file permission handling.<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Added: changelog.txt file for WooCommerce Marketplace submission.<\/li>\n<li>Tweak: Ensured compliance with WooCommerce submission requirements.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Added: Changelog section to readme.txt for WooCommerce Marketplace submission.<\/li>\n<li>Tweak: Updated documentation for clarity.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Fixed: Improved compatibility with WooCommerce 9.0.<\/li>\n<li>Added: Support for variable product pricing per user role.<\/li>\n<li>Tweak: Optimized debug logging for better performance.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Added: Category restriction option for role-based pricing.<\/li>\n<li>Fixed: Bug in Quick Edit pricing for specific user roles.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Added: Crash Handling.<\/li>\n<li>Fixed: This plugin won't crash anymore if the required packages are not installed but simply warn the user.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Added: Dynamic Translation.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Added: Translation.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Fixed: Better Category Handling.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Added: New Style.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Added: First version.<\/li>\n<\/ul>","raw_excerpt":"A lightweight WooCommerce plugin to set custom prices or discounts for products based on user roles.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/234246","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=234246"}],"author":[{"embeddable":true,"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/tlloancy"}],"wp:attachment":[{"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=234246"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=234246"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=234246"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=234246"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=234246"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=234246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}