=== Extra Product Options for WooCommerce ===
Contributors: actpro, freemius
Tags: woocommerce product options, woocommerce product addons, woocommerce custom fields, product addons, conditional logic
Requires at least: 6.1
Tested up to: 7.0.2
Requires PHP: 7.4
WC requires at least: 8.0
WC tested up to: 11.0.0
Stable tag: 4.4.9
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Add 27 custom field types (20 FREE) to WooCommerce products with nested conditional logic, custom pricing, and advanced display rules.
== Description ==
🔥 #1 WooCommerce Product Options Plugin with Nested Conditional Logic
Transform your WooCommerce product pages with Extra Product Options for WooCommerce by WPActPro. Add up to 27+ custom product fields with advanced nested conditional logic (AND/OR groups) - the only free plugin offering this powerful feature. Whether you run a small boutique or a large online store, our plugin drives sales growth by enabling customers to personalize products effortlessly.
Why Choose Extra Product Options for WooCommerce?
✅ 27 Field Types - 20 FREE + 7 Premium field types including Country Selector, Rating, Tooltip, and advanced switchers
✅ Nested Conditional Logic - Advanced AND/OR groups (FREE version exclusive!)
✅ Easy to Use - Drag & drop builder with modern UI
✅ Highly Customizable - Section settings, row/column layouts, styling options
✅ Performance Optimized - Custom database tables for faster queries
✅ Developer Friendly - Extensive hooks and filters
From a simple gift wrap option through to complex PC configurations, extra product options are a proven way for you, as a WooCommerce store owner, to increase your profits.
Extra Product options are much easier, more flexible, and faster to use than variable products. Instead of generating thousands of variations, enable customers to customize products with additional options such as text fields, checkboxes, radio buttons, dropdowns, and more. You can add extra product options to selected Products or selected Categories.
== 🎉 What's New in Version 4.4.8 ==
Version 4.4.8 introduces the Country Selector and Rating field types, Tooltip/Help Icon feature, Advanced Validation System, Cross-Field Pricing Rules, and Import/Export functionality for enhanced product customization and addon management:
- 📤 Import/Export Addon Configurations - Export and import addon configurations as JSON files
- ⭐ Rating Field Type - Star rating selector (1-10 stars) with Price Per Star pricing support
- ❓ Tooltip / Help Icon Feature
- ✍️ Help Text Configuration - New "Help Text" input field in General Settings
- ✅ Regex Pattern Validation - Pattern validation for Text, Textarea, Email, Phone, URL, Password, Number, Hidden fields
- 📏 Min/Max Length & Words Validation - Character length constraints and word count limits with custom error messages
- 🎨 Real-time Validation Feedback - Persistent error display until requirements met, Add-to-Cart button disabled until validation passes
- ⚡ Advanced Tooltip Styling - Arrow pointer, shadow, and full accessibility support
- 🔧 Bug Fixes - Tooltip overflow clipping, disabled fields display, product quantity conditions in additional rules
- 🌍 Country Selector Field Type - New dedicated field type for country selection with all ~250 WooCommerce countries in dropdown. Perfect for international shipping, region-specific pricing, and location-based product customization
- 💰 Per-Country Pricing - Set custom prices for each country. Customers see price additions next to each country option (e.g., "Australia (+€100.00)"). Supports fixed pricing per country with automatic total calculation
- 📋 Smart Country List - Displays all WooCommerce countries automatically. When users select a country, it appears in the Addon Options Test section with the correct price and updates the total instantly
- 🏗️ Builder Integration - Country dropdown selector in the admin builder for easy option management. No need to type country names - just select from the dropdown and set per-country prices
- ❓ Tooltip / Help Icon Feature - Add optional help text next to any field label. A small "?" icon appears when configured, and hovering displays the help text in a styled popup tooltip with arrow pointer
- ✍️ Help Text Configuration - New "Help Text" input field in the General Settings tab of every field type. Support for safe HTML formatting (bold, italic, links, line breaks) via wp_kses_post()
- 🎨 Polished Design - White popup with rounded corners, subtle border, drop shadow, and arrow pointer. Responsive design with mobile-optimized tooltip sizing
- ♿ Accessibility - Proper ARIA labels, role="button" on icon, role="tooltip" on popup. Full keyboard support via :focus state for accessibility and mobile tap support
- ⚡ Pure CSS Implementation - No JavaScript required. Hover, focus, and focus-visible states trigger tooltip display with smooth transitions
- 🔧 Bug Fix - Overflow Clipping - Fixed tooltip being clipped by parent containers. Added comprehensive overflow: visible rules to prevent clipping by form wrappers, section containers, and layout elements
- ✅ Advanced Validation System - Regex pattern validation, min/max character length, word count limits (textarea), custom error messages, and real-time validation for Text and Textarea fields
- ⚡ Cross-Field Pricing Rules - Set dynamic field prices based on selections in other fields with 5 operators (Add, Subtract, Multiply, Percentage Add, Replace) and real-time price updates
- ✅ Code Quality - PHPCS compliant, proper documentation, singleton addon pattern, hook-based integration
== What are the benefits of WooCommerce extra product options? ==
🔑 Generate more sales
🔑 Increase the profit margin
🔑 Stand out from the competition
🔑 No need for higher inventory costs
🔑 Better customer insight
🔑 Increase customer loyalty
🔑 Power the online business
== 🎬 See It In Action ==
Try Our Live Demo:
Key Features to Explore:
✅ Nested conditional logic with AND/OR groups
✅ 27 field types in action (20 FREE + 7 Premium)
✅ Section settings and layouts (Accordion, Tabs, Wizard)
✅ Conditional display rules with AND/OR conditions
✅ Advanced custom pricing options (Fixed, Percentage, Per-Character, Per-Word, Formulas)
➡️ Try Demo Now ⬅️
== Documentation & Tutorials ==
== 💡 Share Your Ideas & Feature Requests ==
We value your feedback! Help us improve the plugin by sharing your ideas and requirements.
What features would you like to see?
- New field types you need for your store
- Additional functionality or integrations
- UI/UX improvements
- Performance enhancements
- Any other suggestions
How to share your feedback:
Your suggestions help us prioritize features and build a better product roadmap. We review all feedback and consider it for future releases!
== 💁 Complete List of 27 Field Types ==
20 FREE Field Types:
- ✅ Text Field - Single-line text input with optional HTML5 validation (email, URL, phone). Supports character length validation and regex patterns (FREE)
- ✅ Textarea - Multi-line text area with word/character limits and regex validation
- ✅ Number Field - Numeric input with min/max values and step increments. Supports decimal and whole numbers
- ✅ Password Field - Masked password input for sensitive information
- ✅ Select Dropdown - Single-choice dropdown selector. Per-option pricing support
- ✅ Multi-Select - Multiple choice dropdown. Select/Deselect All button support (PRO). Per-option pricing
- ✅ Checkbox - Single checkbox with yes/no option. Per-option pricing support
- ✅ Checkbox Group - Multiple checkboxes for multi-select. Per-option pricing support
- ✅ Radio Group - Radio buttons for single selection. Per-option pricing support
- ✅ Date Picker - Calendar date selector with min/max dates, format options (PRO), and advance date-range pricing (PRO)
- ✅ Time Picker - Time selector with customizable format. Earliest/Latest time constraints (PRO)
- ✅ Color Picker - Color selection widget with HTML5 color input
- ✅ Switch - Toggle on/off switch with customizable icons and colors (PRO). Smooth animations (PRO)
- ✅ Slider - Range slider for numeric selection. Dual handle mode (PRO) for min/max range selection
- ✅ Hidden Field - Non-visible field for passing data through the system
- ✅ Heading - Display-only section heading for visual organization
- ✅ Paragraph - Display-only text area for informational content
- ✅ Separator - Horizontal divider line. Customizable color, style (solid/dashed/dotted/double), width, and margin
- ✅ Rating Field - Star rating selector (1-10 stars). Price Per Star pricing (FREE). Perfect for reviews, feedback, and ratings
- ✅ Country Selector - Auto-populated country dropdown with ~250 WooCommerce countries. Per-country pricing support. Ideal for international shipping
7 PREMIUM Field Types:
- 💎 File Upload - Multi-file upload with type and size restrictions. AJAX upload support
- 💎 Color Switcher - Color swatch buttons for visual color selection. Per-option pricing
- 💎 Text Switcher - Text/button buttons for option selection. Per-option pricing
- 💎 Image Switcher - Image thumbnail buttons for visual selection. Multi-image support (PRO). Per-option pricing
- 💎 Product Group - WooCommerce product selector. Min/Max selection limits. Per-product pricing (fixed, product price, or percentage)
- 💎 Repeater Field - Repeatable group of fields. Customers can clone/remove field groups. Min/max repeat limits. Per-instance pricing
- 💎 Section Layout - Accordion, Tabs, and Step Wizard layouts for organizing addon fields. Global and per-addon override settings
== 👉 Display Position for Extra Fields ==
- Before Add To Cart Button
- After Add To Cart Button
- Pro - Before Variation Data (for variable products)
➡️ View Demo ⬅️
== 💁 Key Capabilities of Extra Product Options ==
- Add 27 types of extra custom product fields to WooCommerce Product Pages (20 FREE + 7 Premium)
- Add extra custom fields for the selected product and selected categories
- Manage Required or optional fields
- Add prices to options
- Allow multiple attributes to be selected in the same option
- Easy to Use
- Drag & Drop
- Use with or without prices
- Show/hide prices
- Manage labels, values, placeholders, and CSS classes for each field
- Duplicate the extra product custom field or groups of fields
- Edit, Remove, Enable, or disable the extra product fields easily
- Dynamic product price: Change the price depending on a field value(s)
- Visibility options: decide on which product(s) to show your fields
- Set prices for each option value
- Make options mandatory for selection
- Display selected values on checkout, order info pages, and in the order emails
== 👉 Display Position for Extra Fields ==
- Simple Product
- Variable products over ajax
➡️ View Demo ⬅️
💎💎 💎 PREMIUM KEY FEATURES
💁 Types of extra options for WooCommerce Product
- Pro - File upload – allowing your customers to upload (multiple) files.
- Pro - True/false – A "yes/no" checkbox
- Pro - Image swatches – multi and single choice options with images.
- Pro - Color swatches – multi and single color options.
- Pro - Text swatches – text options.
- Pro - Paragraph - so you can add content and shortcodes to your product page.
- Pro - Image – to add images.
- Pro - HTML
- Upload Field – To collect files from users which can be images, Videos, Documents, and anything that is supported by WordPress.
- Pro - Slider with custom formulas on product detail page
- Pro - Switch with Switch Layout, Animation Style, Checked Icon, Checked Background Color, Unchecked Icon, Unchecked Background Color
💎 Custom Price Fields - Pro
Allow setting the price of your custom product fields. and this price will be added to the product total based on the field value. it is useful when you want to charge an additional fee for your additional services. Multiple wany you can set price.
- Fixed: Set a fixed price for the extra field. This fixed amount will be added to the total product price upon selecting the addon.
- Pro - Percentage: Set a percentage price for extra field. This percentage amount will be added to the total product price upon selecting the addon.
- Pro - Custom: User will enter the price and It will be added to the product price. like getting donations, tips, and similar things.
- Pro - Percentage of Product Price: Set the addon price in percentage. It will calculate the product price and added to the product price.
- Pro - Dynamic: Set the price per ‘n’ number of units/ quantity. Addon price will be calculated for the total number of units/ quantity selected by the customer and added to the product price.
💎 Conditionally Display Fields According To Relevance
with this option, you can set extra fields " Display Rules " based on a number of conditions. You will be able to control the field display easily by adding different conditions based on the following.
- All Products (with Select All/Clear All)
- Products
- Categories
- Tags
- Pro - User roles
- Pro - Other Fields values
- Pro - Date picker and time picker
- Pro - Product variations
- Pro - Product quantity
➡️ View Demo ⬅️
💁 Example Uses of WooCommerce Extra Product Options Plugin
Here are just a few of the ways this flexible plugin can be used:
- Sell events and tickets using this plugin to add options like seat, date, booking fees, etc
- Add extra delivery/shipping options and costs to orders
- Brand options
- Checkout fields
- Dropshipping options
- Delivery times and dates
- Dynamic pricing
- Custom product designing
- Hotel booking
- Bulk editing of product options
- Add gift wrap options to products (with costs) as shown in the demo
- Add image choices to printable products (with or without prices)
- Add text to cards (with the possibility of charging per character )
- Add discounts to products (option prices can be negative)
- Chargeless for bulk/wholesale orders (bundle rates)
- Add extra charges/fees to orders
- Add extra charges/fees to products
➡️ View Demo ⬅️
👉 CUSTOM HOOKS
The plugin is most developer-friendly so that you can easily add more functionalities if needed with our hooks.
💁 Contact Us
Free plugin: Need Technical Help? - Click here
➡️ Premium Version ⬅️
== Installation ==
= Minimum Requirements =
* WooCommerce 8.0 or greater
* WordPress 6.1 or greater
* PHP 7.4 or greater
= Automatic installation =
1. Log in to your WordPress dashboard.
2. Navigate to the Plugins menu, and click "Add New".
3. Search and locate 'Extra Product Options for WooCommerce' plugin.
4. Click 'Install Now', and WordPress will take it from there.
= Manual installation =
Manual installation method requires downloading the 'Extra Product Options for WooCommerce' plugin and uploading it to your web server via your FTP application. The WordPress codex contains [instructions on how to do this here](https://wordpress.org/support/article/managing-plugins/#manual-plugin-installation).
== Frequently Asked Questions ==
= What makes this plugin different from other WooCommerce product options plugins? =
Our plugin is the ONLY free plugin offering nested conditional logic with AND/OR groups. This means you can create complex conditions like "Show field A when (Product X OR Product Y) AND (Category Z OR User Role Admin)". Most competitors only offer simple conditional logic in their free versions.
= How many field types are included in the free version? =
The free version includes 20 field types, more than most competitors. These include text, textarea, number, password, select, multiselect, radio, checkbox, checkboxgroup, datepicker, timepicker, colorpicker, switch, slider, hidden, heading, paragraph, separator, rating, country selector, and tooltip/help icon. Plus 7 additional premium field types (file upload, color switcher, text switcher, image switcher, product group, repeater, and section layout).
= Does the plugin support conditional logic? =
Yes! Our plugin offers the most advanced conditional logic in the free version. You can create nested conditions with AND/OR groups to show/hide fields based on products, categories, tags, and more.
= Can I add custom pricing to fields? =
Yes! The free version supports fixed pricing. Premium version adds percentage pricing, custom formulas, price per character, and more advanced pricing options.
= Is the plugin compatible with my theme? =
Yes! The plugin is designed to work with all major WooCommerce-compatible themes as we provide comprehensive styling settings including margin, padding, and CSS customization options to help you match the plugin's appearance with any theme. You can adjust spacing, colors, borders, and more through the section settings and field styling options.
= Can I use conditional logic to show different fields for different products? =
Absolutely! You can set display rules based on products, categories, tags, and more. Create complex conditions using AND/OR logic to show fields exactly when and where you need them.
= Does the plugin support variable products? =
Yes! The plugin works seamlessly with both simple and variable products. Fields are displayed via AJAX for variable products to ensure smooth user experience.
= Can I customize the appearance of the fields? =
Yes! You can customize field labels, add CSS classes, configure section settings, use row/column layouts, and more. Premium version adds even more styling options.
= Is there a demo I can try? =
Yes! You can try our live demo to see the plugin in action, or check out our video tutorials.
= How does option stock management work? (Premium) =
Per-option stock lets you set a stock quantity on individual options (e.g. "Red - 10 left", "Green - 5 left") for Select, Radio, Checkbox, Color Switcher, Image Switcher, and Text Switcher fields. Stock is validated before add-to-cart, deducted when the order is placed at checkout, and restored automatically when an order is cancelled, refunded, or fails. You can verify deductions in the order line item meta (_epofw_option_stock_deductions) and check current option stock in the addon builder.
= How do I get support? =
Free plugin users can get support via email at support@wpactpro.com. Support with faster response times.
== Screenshots ==
1. List Of Fields
2. Conditional Logic
3. Pricing Options
4. Text Options Settings
5. Text Options At Front Side
6. Textarea Options Settings
7. Textarea Options At Front Side
8. Number Options Settings
9. Number Options At Front Side
10. Checkbox Options Settings
11. Checkbox Options At Front Side
12. CheckboxGroup Options Settings
13. CheckboxGroup Options At Front Side
14. ImageSwitcher Options Settings
15. Multiselect Options Settings
16. Multiselect Options At Front Side
17. Qty Settings
18. Qty At Front Side
19. Radiogroup Settings
20. Radiogroup At Front Side
21. WooCommerce Settings
== Upgrade Notice ==
Automatic updates should work great for you. As always, though, we recommend backing up your site prior to making any updates just to be sure nothing goes wrong.
== Changelog ==
= 4.4.9 - 2026-08-11 =
* Fix - Cross-field Price Rules combined with Quantity-Based (Volume / Tiered) Pricing now apply correctly for every tier type. A fixed rule such as "Subtract 10" is taken off the line total once only when the matched tier is a flat type; against a per-unit tier, and when the quantity matches no tier at all, it now comes off each unit and is multiplied by the quantity. Percentage and Multiply rules are unaffected. Totals may change for setups that combined a per-unit tier with a fixed Price Rule
* Fix - Image Switcher option images no longer break when a site moves to a new address or drops a staging sub-directory. The stored image URLs live in the plugin's own tables, which search-and-replace tools skip, so every swatch rendered blank. Images are now re-pointed at the current uploads directory automatically, and URLs that genuinely point elsewhere (a CDN, another site) are left untouched
* Fix - Advanced Validation Rules can now be switched off. Turning the toggle off appeared to save, but the setting was read back as enabled on the next page load, making it impossible to disable once any rule had been entered
* New - Product page addon totals now show the quantity behind every amount. The subtotal reads "Subtotal (119.00$ x 6)" with the line total, and a field with its own quantity shows "(12.00$ x 4)" beside its name, so a shopper can see exactly how the figure was reached instead of a per-item price that looked like an order total
* Update - The Quantity-Based Pricing panel now states that a matching tier REPLACES the Field Price above it, and warns when the field uses a calculated Price Type (per character, per word, or a custom formula) whose result the tier would discard
* Update - The "Use the product quantity" setting in Quantity Settings (previously labelled "Product Quantity") now explains what it does to the price, with worked figures for both states
* Fix - Per-word pricing now counts words the same way the product page does. Languages that do not use the Latin alphabet (Japanese, Chinese, Thai, Arabic) were counted incorrectly, so the cart charged a different amount from the price shown
* Fix - Server-side validation now runs when an item is added to the cart. Validation rules were only ever enforced in the browser, so a customer bypassing the page's scripts could add a product with values that break the rules. Rules are now re-checked on the server, and anything the check cannot positively identify is allowed through so that valid purchases are never blocked
* Fix - Advanced Validation rules are now cleaned up when an addon is saved. Invalid entries such as a non-numeric character limit or a malformed pattern were stored exactly as typed instead of being corrected or discarded
* Fix - Validation character and word limits now count the same way the browser does, so a value accepted on the product page is no longer rejected at the cart for non-English text
* Fix - Per-character pricing now charges for the characters typed rather than the bytes they occupy. Accented, non-Latin and other non-ASCII text ("café", Japanese, Cyrillic) was counted by byte length on the server, so the cart charged more than the price shown on the product page. Server and product-page totals now always agree. Prices for plain English text are unchanged
* Fix - Product Group option settings (label, price, and the linked product) could be saved in an unusable form, so the field's product list did not work correctly after saving. Options are now always stored in the correct structure
* Fix - Per-option stock could drain faster than items were actually sold. When a multi-select or checkbox group submitted the same option more than once, each repeat was counted as a separate sale and deducted another unit from that option's stock
* Fix - Deleting a post or product that had no saved addon options could silently discard other database changes made in the same request. The plugin opened a database transaction to remove the addon's data, and when there was nothing to remove it returned without closing it, so anything saved afterwards in that request was rolled back when the page finished loading
* Fix - Deleting an addon now removes all of its stored layout data. One level of the layout structure was never cleaned up, so unused rows built up in the plugin's tables over time and were never removed
* Fix - Fields that disappeared from addons migrated from older versions are restored. The first field of every migrated legacy addon was hidden everywhere in the plugin — the builder, the product page and the cart — even though it was still stored safely in the database. Updating brings those fields back automatically, with their settings and prices intact. If you re-created a missing field by hand after the upgrade you may now see it twice, and can delete the duplicate
* Fix - Custom Price Formulas using powers (for example pow({value}, 2) or Math.pow({value}, 2)) were charged as 0.00 instead of the calculated amount, so products using them added nothing to the total
* Fix - Importing addons in "Update existing" mode failed immediately with a fatal error and imported nothing. Update-mode imports now complete normally
* Fix - Migration status and verification screens reported 0 fields for every addon, making a completed migration look like it had lost all data. The counters now report the real field count
* Fix - Separator and Product Group were missing from the field type list on the About page
* Fix - The Repeater field no longer shows an empty settings card in the builder on the free version
* Code - Test suite expanded to 782 automated tests covering pricing, storage, migration, import/export and the addon field types, and the suite now runs against its own isolated database so results are reproducible
* Fix - Product page addon totals no longer show duplicate option rows (and a wrong subtotal) for fields saved by old plugin versions with label-based input names containing unsafe characters (spaces, dots, slashes, parentheses). A one-time background migration normalizes those stored names to the canonical epofw_field_{id} format, and field rendering plus frontend JS now normalize such names defensively
* New - Documentation page redesign: Getting Started video hero, live doc search with All / General / Field Types / Pricing filter tabs, and a resources sidebar (Full Documentation, Video Tutorials, Support)
* New - Guided Tour: an end-to-end interactive spotlight walkthrough that follows the real build flow — from Add New on the addons list, through the addon configuration (Status, Name, Display Rules, Position, Section Layout), adding a section, dropping in a field, and every field-settings tab (General, Label, Options, Quantity, Pricing, Conditional Logic, WooCommerce, Container). It waits for you to perform each action, auto-switches tabs, resumes across the page change, and can be launched anytime from the "Take a Tour" buttons in Quick Actions, the builder and the Documentation page (also auto-shown once for new users)
* Fix - Elementor "Product Add to Cart" widget compatibility: addon fields no longer collapse into one row with the quantity box and Add to Cart button
* New - Quantity-Based (Volume / Tiered) Pricing: set price breaks per field where the matched tier prices all units; four tier types (Fixed or % of product price, each per unit or flat), by product or field quantity, with live preview and cart/shop support
* Fix - Tooltip help icon/text no longer leaks into the shop quick-view "Apply" options summary label
* Update - French (fr_FR) translation refreshed to 100% coverage (300 new/updated strings, including Volume Pricing, Guided Tour, Import/Export, Validation and Documentation screens)
* Fix - Product page price preview now always matches the cart: priced fields with pre-selected defaults on hidden wizard steps or collapsed accordion sections (default-checked options, slider at its minimum) are counted in the addon totals from page load, so customers are never charged more at checkout than the product page showed
* New - Discount Rules for WooCommerce (Flycart) compatibility: store discounts now apply to the product price only — addon prices keep their full configured amount instead of being discounted along with the product (applies only when a discount rule actually matches; flat-amount discounts and undiscounted items are untouched). The product-page addon totals preview also uses the discounted product price, so the preview always matches the cart
* Fix - Values placed by browser autofill are now priced in the addon totals as soon as the browser exposes them (at the customer's first interaction) instead of only when clicking Add to Cart
* Fix - Password fields no longer trigger the browser's saved-login autofill (autocomplete="new-password"), which could silently fill neighbouring priced text fields with the saved username
* Fix - Addon option prices now display in the Cart/Checkout block, not just the classic cart and mini-cart. The price is shown next to each selected option (e.g. "Choose Your Size: XS (99.00$)") consistently across all cart types
* Fix - Product Group no longer shows a Pricing Options tab. Each product is priced individually in the Product Group Options tab, so the field-level pricing tab (which was informational only, with no usable controls) has been removed
* Fix - The Pricing tab intro banner now shows an accurate message for option-based fields (Select, Radio, Checkbox, etc.): they are priced per option and use Price Rules / Volume pricing, instead of the generic "set the field price" text
* New - Redesigned Pricing Options tab: a clear Field Price → Price Rules → Volume calculation-order map at the top, each pricing system in its own collapsible card with an On/Off summary. Purely a UI change — saved data, input names, and how prices are calculated are all unchanged
* Fix - Added proper spacing above the Price Rules section in the Pricing tab so it is clearly separated from the field's own pricing controls (e.g. the Rating per-star rows and Add Row button)
* Fix - Conditional Logic (Visibility) rule value dropdown was empty when the trigger field was a Country or other option-based field (Select, Radio, Checkbox Group, Multiselect, colour/text/image switchers); it now correctly lists that field's options so a matching value can be chosen
* Fix - Volume / Tiered pricing "Tier basis" no longer offers "Field quantity" for field types that have no Quantity tab (Rating, and heading/paragraph/separator/hidden/password), where a field-quantity basis could never apply
= 4.4.8 - 2026-06-30 =
* New - Price Rules now work on option-based fields (Select, Radio, Checkbox, Checkbox Group, Multiselect, and Country) - adjust the selected option's price when another field has a specific value, with live product-page preview and cart/checkout support
* Fix - Tooltip / Help Icon redesigned (dark tooltip with a visible arrow and correct padding) and no longer clipped by theme or plugin styles
* Fix - Country field price is now consistent between the dropdown label, the product-page add-on details, and the cart
* Fix - "Migrate to Sections" button no longer shows misaligned loading text (now shows a clean spinner)
* Update - Added a loading indicator when adding a new Price Rule
* New - Import/Export addon configurations
* New - Tooltip / Help Icon feature
* New - Help Text input in General Settings
* New - Regex Pattern Validation for 8 field types (Text, Textarea, Email, Phone, URL, Password, Number, Hidden)
* New - Min/Max Length constraints validation
* New - Min/Max Words constraints validation
* New - Custom Validation Error Messages
* New - Persistent error display until requirements met
* New - Real-time validation feedback on blur and input
* New - Add-to-Cart button disabled until validation passes
* New - Country Selector field type with WooCommerce country dropdown
* New - Per-Country Pricing with dynamic price calculations
* New - Cross-Field Pricing Rules with 5 operators (Add, Subtract, Multiply, Percentage Add, Replace)
* Improved - Tooltip styling with arrow pointer and shadow
* Improved - Full accessibility support for tooltips
* Fixed - Tooltip overflow clipping
* Fixed - Disabled fields with empty field_status being displayed on shop page when they shouldn't be
* Fixed - Additional rules for addons not properly excluding products due to type mismatch in product/product_variation condition comparisons
* Fixed - Product Quantity condition in additional rules always evaluating to true instead of checking actual cart quantity
* Fixed - Missing class loads in plugin initialization (import-export and bulk-export-import classes)
* Fixed - Better error handling for failed exports and JSON parsing
* Security - Proper output escaping for nonce values
* Code - PHPCS compliance and code quality improvements
* Compatible with WooCommerce 10.9.x and WordPress 7.x
= 4.4.7 - 2026-04-23 =
* New - Product Group Fields
* New - Slider range
* Update - Unauthenticated AJAX allows arbitrary file deletion
* Compatible with WooCommerce 10.7.x
= 4.4.6 =
* New - Section Layout (Premium) - Organize addon sections using Accordion, Tabs, or Step Wizard layouts
* New - Section Layout Global Settings (Premium) - Set global defaults for all section layouts with per-addon override capability
* New - Accordion Layout options: Mode (Single/Multi Open), Default Expanded (All/First/None), Icon Style (Plus/Minus, Chevron Arrow, Caret Triangle)
* New - Tabs Layout options: Style (Horizontal, Vertical, Pills, Underline), Position (Left/Right for vertical tabs)
* New - Wizard Layout options: Progress Bar, Step Indicators with completed/error states, Navigation buttons
* New - General Behavior settings: Animation Speed (Fast/Normal/Slow), Remember User State, Deep Linking, Highlight Sections with Errors
* New - Smart validation for hidden fields - Automatically expands sections with errors, shows error indicators, and focuses on invalid fields
* New - Error indicators on tabs/accordion headers/wizard steps when sections contain validation errors
* New - Keyboard accessibility for all layouts (arrow keys, Enter/Space, Home/End navigation)
* New - Custom (User Entered) pricing type for number fields - Accept donations, tips, and custom amounts
* New - Dynamic (Per Unit) pricing type - Calculate price per 'n' number of units
* New - Dynamic - Exclude Base pricing type - Price per unit excluding base quantity
* Improved - Tax display on product page - Shows "Including € XX.XX Tax" matching cart display format
* Improved - Per-addon tax class support - Each addon can have its own tax class (standard, reduced-rate, zero-rate)
* New - Per-option stock management (Premium) - Set stock quantity per option for option-based fields (Select, Radio, Checkbox, Color/Image/Text Switcher)
* New - Stock validation before add-to-cart - Prevents adding to cart when selected options are out of stock
* New - Stock deduction at checkout - Option stock is reduced when order line items are created
* New - Stock restoration on order cancellation, refund, or failure
* Improved - Tax info updates dynamically when switching product variations
* Compatible with WooCommerce 10.5.x
= 4.4.5 =
* New - Repeater field type (Premium) - Allow customers to duplicate a group of fields on the product page
* New - Repeater features: select fields to repeat, configurable min/max instances, custom button labels
* New - Repeater pricing: child field prices accumulate across all instances with cart/order support
* New - AJAX server-side search for addons list page with pagination support in admin side
* New - Introduced new actions and filters for better developer extensibility
* New - Added documentation links in each field type tabs for quick reference
* New - Theme compatibility system for Elessi/Flavor and similar themes
* New - Global Settings section - Set global defaults for field labels that apply to all addon fields
* New - Auto (Smart Detection) option for Title Position - Automatically selects optimal label display based on field type
* New - Filters: epofw_before_render_addon_fields, epofw_cart_item_data_after_addon, epofw_before_save_addon_data, epofw_before_duplicate_addon_data
* New - Actions: epofw_before_addon_html, epofw_after_addon_html, epofw_after_add_cart_item_data, epofw_before_delete_addon, epofw_after_delete_addon, epofw_after_save_addon, epofw_after_duplicate_addon
* New - Actions: epofw_before_global_label_settings, epofw_after_global_label_settings, epofw_global_settings_sections
* Improved - Compatibility with Elessi/Flavor themes for addon positioning
* Performance - Added caching for general settings to reduce database queries
* Performance - Added static caching for product terms (categories/tags) in conditional logic evaluation
* Performance - Added object caching for addon post IDs list on frontend
* Performance - Added static caching for per-product addon match results
* Performance - Optimized WooCommerce tax display option calls in price functions
* Performance - Added object caching for global settings with 1-hour expiration
* Fixed - Currency display issues in addon price formatting
* Fixed - JavaScript errors in addon price calculation
* Fixed - Additional Rules flash/flicker on page load - addons now hide instantly via server-side pre-evaluation
* Fixed - Addons without Additional Rules no longer display on product pages - rules are now required for addon visibility
* Fixed - Column group drag-drop reorder not saving correctly after save
= 4.4.4 =
* New - Nested logic structure for Additional Rules (AND/OR groups)
* Improved - Additional Rules now support grouped conditions with AND/OR logic
* Improved - Better flexibility for complex conditional rules
* Improved - Cart item price calculation now includes addon prices on-the-fly for accurate display
* Fixed - AJAX add to cart not calculating addon prices correctly in cart and mini-cart
* Fixed - Addon prices being double-counted when "Based on product setting" tax option is selected
* Fixed - Mini-cart widget displaying incorrect prices after AJAX add to cart
* Fixed - Multiselect field values not displaying in cart
* Fixed - Multiselect field prices not calculating correctly
* Fixed - Two column fields css issue
* Fixed - Duplicate nonce issue
= 4.4.3 =
* Fixed - Additional Rules
= 4.4.2 =
* Fixed - Documentation
= 4.4.1 =
* New - Separator field type - Add horizontal divider lines to visually separate sections or fields
* New - Separator customization options: color, style (solid, dashed, dotted, double), width, and margin
* New - Email, URL, and Phone Number validation for Text field restrictions
* New - HTML5 input types (email, url, tel) with mobile keyboard optimization
* New - Pattern validation with helpful error messages for Email, URL, and Phone
* New - Tag conditions now available in Free version
* New - Select All/Clear All buttons for conditions now available in Free version
* New - Slider field now available in Free version
* Improved - Real-time addon price updates for email, url, and tel input types
* Fixed - Container query layout issue causing fields to not display on some themes
* Fixed - Added fallback media queries for better theme compatibility
* Fix datepicker advance pricing, readonly field, and date format issues
* Fixed - Datepicker Price not showing accurate in product page
* Fixed - Advance Datepicker Price rules not saved
* Remove custom price formula is unnecessary for datepicker field
= 4.4.0 =
* New - Complete UI redesign with modern, intuitive admin interface
* New - Section management system with comprehensive settings (title, description, styling, custom CSS)
* New - Row & Column layout system for organizing fields (single and two-column layouts)
* New - Custom database tables for improved performance and data structure
* New - Modular JavaScript architecture for better code organization
* Removed - Table structure option (Display Structure Format setting) - all addons now use div structure only
* Removed - Old CSS files (epofw-admin.css, epofw-public.css) replaced with new structure
* Deprecated - `epofw_html_table_field_label_td` - Use `epofw-field-label-html.php` template directly
* Deprecated - `epofw_html_table_field_input_td` - Use `epofw-field-input-html.php` template directly
* Deprecated - `epofw_field_title` - Use template system directly
* Deprecated - `epofw_field_subtitle` - Use template system directly
* Deprecated - `epofw_field_label_start_td` - Use template system directly
* Deprecated - `epofw_field_label_end_td` - Use template system directly
* Deprecated - `epofw_field_input_start_td` - Use template system directly
* Deprecated - `epofw_html_start_tr_display` - Use template system directly
* Deprecated - `epofw_html_end_tr_display` - Use template system directly
* Deprecated - `epofw_html_start_table_display` - Use template system directly
* Deprecated - `epofw_html_end_table_display` - Use template system directly
* Deprecated - `epofw_before_display_structure` (Premium) - Display Structure Format setting has been removed
* Deprecated - `epofw_after_display_structure` (Premium) - Display Structure Format setting has been removed
* Deprecated - `epofw_field_before_title` (Premium) - Use template system directly
* Deprecated - `epofw_field_after_subtitle` (Premium) - Use template system directly
* Compatible with WooCommerce 10.4.x
* Compatible with WordPress 6.9.x
= 4.3.5 =
* Compatibility update for WooCommerce 10.3.x
* Compatibility update for WordPress 6.9.x
* Fixed: Variation price not updating in the subtotal when switching variations
* Fixed: Logical field not displaying for the Textarea field
* Fixed: ImageSwitcher not uploading files
= 4.3.4 =
* Compatible with WooCommerce 10.1.x
= 4.3.3 =
* New – Configuration add-on options in a modal popup on the Shop page for simple products.
* Compatible with WooCommerce 10.0.x
* Fixed - Conditional logic issue with switch, slider and number field
= 4.3.2 =
* Fixed quantity issue with addon
* Fixed subtitle type selection issue
* Added nonce and validate nonce for epofw product adodns
= 4.3.1 =
* Compatible with WordPress 6.8.x
* Compatible with WooCommerce 9.8.x
* Code optimization
* Added new language file fr
= 4.3 =
* Compatible with WordPress 6.8.x
* Compatible with WooCommerce 9.8.x
* Fixed - PHP Notice: Function _load_textdomain_just_in_time was called incorrectly.
= 4.2 =
* Update - Fixed an issue with draggable for options.
* Compatible with WooCommerce 9.8.x
* Fixed - Sanitizing attribute for the field types
= 4.1 =
* New Field - Switch
* Update - Fixed an issue on the admin side where text couldn't be selected when opening the accordion due to movement. Now, drag and drop is restricted to the field header only.
= 4.0 =
* Update - Integration freemius
= 3.1.1 =
* Fixed fatal error
* Fixed - add cart item without product option
= 3.1.0 =
* Add nonce after add to cart button.
* Refactor code
* Compatible with WooCommerce 9.7.x
= 3.0.9 =
* New - Import Dummy Data
* Refactor code
* Compatible with WordPress 6.7.x
* Compatible with WooCommerce 9.6.x
= 3.0.8 =
* Compatible with WordPress 6.7.x
* Compatible with WooCommerce 8.9.x
= 3.0.7 =
* Refactor code
= 3.0.6 =
* Compatible with WordPress 6.5.x
* Compatible with WooCommerce 8.8.x
* Verified nonce when enable/disable option and change field type.
= 3.0.5 =
* Compatible with WordPress 6.5.x
* Compatible with WooCommerce 8.8.x
* Fixed - Cross site scripting
= 3.0.4 =
* Compatible with WordPress 6.4.x
* Compatible with WooCommerce 8.4.x
* Fixed - Scrambled CSS Class for options
* Fixed - Cross site scripting
= 3.0.3 =
* Compatible with WordPress 6.3.x
* Compatible with WooCommerce 8.0.x
* Update - Addon options can be drag and drop
= 3.0.2 =
* Compatible with WooCommerce 7.8.x
* Fixed - Duplicate addons on single product page
= 3.0.1 =
* Compatible with WooCommerce 7.7.x
* Compatible with WordPress 6.2.x
* Fixed - Multiple addons on single product page then subtotal count multiple times
= 3.0 =
* Compatible with WooCommerce 7.5.x
* New - General Settings - Addon Details Title
* New - General Settings - Subtotal Title
* New - Addon template can modified via theme
* Compatible Addon field with pro plugin
* Fixed - Minor issue
= 2.0.9.2 =
* Compatible with WooCommerce 7.3.x
= 2.0.9.1 =
* Compatible with WooCommerce 7.1.x
* Compatible with WordPress 6.1.x
* Fixed error with php8.1
= 2.0.9 =
* Compatible with WooCommerce 7.0.0
* Compatible with WordPress 6.0.x
= 2.0.8 =
* Fixed duplicate field issue
= 2.0.7 =
* Compatible with WooCommerce 6.7.x
* Compatible with WordPress 6.0.x
= 2.0.6 =
* Compatible with WooCommerce 6.5.x
= 2.0.5 =
* Compatible with WooCommerce 6.3.x
* Compatible with WordPress 5.9.x
= 2.0.4 =
* Fixed - Radio button issue
* Compatible with WooCommerce 6.2.x
= 2.0.3 =
* Fixed - Radio button issue
* Fixed - CSS Issue
* Fixed - Wrong price display if select another currency from wocommerce setting
* Compatible with WordPress 6.2.x
= 2.0.2 =
* Fixed - critical problem to save data
= 2.0.1 =
* Fixed - Remove comma after some enqueue script and style
* Compatible with WordPress 5.9.x
= 2.0 =
* New - Enable/Disable Field Options using checkbox
* Fixed - PHP Warning
* Update - Code, CSS and JS
* Compatible with WooCommerce 6.1.x
* Compatible with WordPress 5.8.x
= 1.9.8 =
* Fixed - When click on variable product from cart and back to product page then price calculation issue.
* Fixed - PHP Warning
* Compatible with WooCommerce 5.9.x
* Compatible with WordPress 5.8.x
= 1.9.7 =
* Fixed - Not working with greek/chinese characters
* Fixed - PHP Warning
* Compatible with WooCommerce 5.9.x
* Compatible with WordPress 5.8.x
= 1.9.6.4 =
* Fix - PHP Uncaught TypeError
= 1.9.6.3 =
* Fix - Greek character display issue
= 1.9.6.2 =
* Fix - PHP Warning
= 1.9.6.1 =
* Fix - PHP Warning
= 1.9.6 =
* Compatible with WooCommerce 5.8.x
= 1.9.5 =
* Currency position issue with subtotal on product detail page
* Compatible with WooCommerce 5.7.x
* Compatible with WordPress 5.8.x
= 1.9.4 =
* Addon price is not displaying properly in product detail page
* Compatible with WooCommerce 5.6.0
* Compatible with WordPress 5.8
= 1.9.3 =
* Remove action not working due to instance class
* Compatible with WooCommerce 5.5.2
* Compatible with WordPress 5.8
= 1.9.2 =
* Compatible with WooCommerce 5.5.x
= 1.9.1 =
* Fixed - Additional rule was not working when we add two addon forms for the same category.
* Compatible with WooCommerce 5.4.x
= 1.9.0 =
* Maintenance Release
= 1.8.9 =
* Fixed - Pricing sign issue
* Update - Compatible with WordPress 5.7.2
* Compatible with WooCommerce 5.3.0
= 1.8.8 =
* Fixed - Product search issue with cyrillic input
= 1.8.7 =
* Fixed - Variable price issue in cart
* Fixed - JS error in product page
= 1.8.6 =
* Fixed - Minor changes
= 1.8.5 =
* Price issue with variable product
* Compatible with WooCommerce 5.2.2
* Compatible with WordPress 5.7.1
= 1.8.4 =
* Compatible with WooCommerce 5.2.x
= 1.8.3 =
* Fixed - Colorpicker was not working.
= 1.8.2 =
* Compatible with WooCommerce 5.1.x
= 1.8.1 =
* Display currency position based on WooCommerce Settings.
= 1.8 =
* Compatible with WooCommerce 5.0.X
* Update strings for translation
= 1.7 =
* Compatible with WooCommerce 4.9.X
* Update language pot file
= 1.6 =
* Fixed - Missing Text Domain
= 1.5 =
* Fixed - Undefined index issue
= 1.4 =
* Compatible with WooCommerce 4.8
* Compatible with WordPress 5.6
= 1.3 =
* Maintenance Release - Update demo in readme.txt file
= 1.2 =
* Fixed - Addon field not showing in cart page.
= 1.1 =
* Compatible with WooCommerce 4.6.1
= 1.0 =
* Initial release