=== PPOM - Product Addons & Custom Fields for WooCommerce ===
Contributors: themeisle
Tags: product addons, woocommerce product addons, woocommerce product options, custom fields, variable products
Requires at least: 6.2
Tested up to: 6.9
Stable tag: 34.0.0
License: GPLv2
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Requires PHP: 7.2

Easily add a range of custom fields to WooCommerce products, from text boxes to date selectors, allowing customers to personalize their orders.

== Description ==

Are you a WooCommerce store owner looking to offer personalized products? PPOM (Personalized Product Option Manager) is your solution for crafting custom product options and addons tailored to customer needs. This plugin simplifies adding custom fields directly to your product pages, including text inputs, dropdown menus, checkboxes, radio buttons, date pickers, file uploads, and more to enhance the shopping experience.

## Quick Links

- Would you like to see PPOM in action before installing it? [See it in action](https://demo-ppom-lite.vertisite.cloud/)
- Need any help with setup? [View documentation](https://docs.themeisle.com/collection/1695-product-option-manager)
- Interested in PPOM PRO? [Learn more](https://themeisle.com/plugins/ppom-pro/upgrade?utm_source=wordpressorg&utm_medium=readme&utm_campaign=quick-links)

## Why Choose PPOM?

- **Customize with Ease**: Add custom fields and product add-ons directly to your product pages, creating flexible, personalized shopping experiences.

- **Increase Sales Potential**: With dynamic pricing adjustments and enticing customization options, you empower customers to get exactly what they want, increasing both satisfaction and sales.

Increase sales and customer satisfaction by offering tailored product options and add-ons. PPOM is built for WooCommerce stores that need unique, customizable products.

## Input Types in Free Version:

📌 **Text**: Displays an input box for text personalization like 'Name on Mug'. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/basic-text-input/)

📌 **Textarea**: Displays a larger text box for longer text personalization. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/basic-textarea-input/)

📌 **Select Options (with price)**: Dropdown for selecting a single option. Best for many options. Supports per-option pricing. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/basic-select-input/)

📌 **Radio Options (with price)**: Radio buttons for selecting a single option. Best for fewer options. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/basic-radio-input/)

📌 **Checkbox Options (with price)**: Checkboxes for selecting multiple options. Supports per-option pricing. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/basic-checkbox-input/)

📌 **Date**: Let customers pick a date (e.g., date of birth). [View Demo](https://demo-ppom-lite.vertisite.cloud/product/basic-date-input/)

📌 **Email**: Email input displays an input box that allows users to add an email address. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/basic-email-input/)

📌 **Number**: Number input for digits only (e.g., phone numbers, IDs). [View Demo](https://demo-ppom-lite.vertisite.cloud/product/basic-number-input/)

📌 **Hidden**: An invisible field that stores a default value (e.g., a product code) — it appears in the cart and order details but not on the product page. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/hidden-input/)


## Features in Free Version:

📌 **Prices with Options**: Enable dynamic pricing for custom features, ensuring each choice reflects its value.

📌 **Conditional Logic**: Show or hide fields based on user inputs or specific criteria.

📌 **Tooltip**: Displays helpful descriptions on hover without cluttering the interface.

📌 CSS Classes: Assign CSS classes to each input for enhanced styling.

📌 **Fields Width**: Easily control the layout by adjusting the width of each field.

📌 **Min/Max Length**: Set minimum and maximum values for text or number inputs.

📌 **Input Masking**: Ensures users input data in predefined formats for accuracy and consistency.

📌 **Placeholder**: Establish placeholders for `text, textarea, and number inputs`.

📌 **Fields Validation**: Mark fields as required to ensure data completeness.

📌 **Error Messaging**: Define custom error messages for required fields.

📌 **Field Description**: Use HTML tags to enhance field descriptions.

📌 **Price Display Options**: Choose how to display additional prices, such as hiding them, showing only the total, or displaying them itemized.

📌 **Fields Privacy**: Set field visibility based on criteria such as visible to everyone, guests, or specific user roles.

📌 **Apply via Category**: Deploy PPOM fields category-wide to save time, or apply them to individual products as needed.

📌 **Compatibility with Advanced Order Export For WooCommerce plugin**: Streamlines data exports, supporting CSV, XLS, XML, and JSON formats for all custom fields.

📌 **Multi-Language Support**: Ready for WPML and Polylang, enhancing global usability.

== Video Guide ==
[youtube https://www.youtube.com/watch?v=wGQBOzyMF4U]

## PPOM PRO Inputs:

💎 **Audio/Video**: Allow customers to select audio/video from predefined audios/videos by admin. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/demo-for-video-music/)

💎 **Bulk Quantity**: Set discount prices for larger quantities. Ideal for printing and design businesses. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/basic-bulk-quantity-input/)

💎 **Chained Input**: Renders chained input in the dropdown. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/chained-input/)

💎 **Collapse Input**: This input acts like a parent block for managing grouped inputs. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/collapse-input/)

💎 **Color Palette**: Allow customers to select color(s) from a predefined set of colors by admin. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/demo-for-color-palette/)

💎 **Color Picker**: Allow customers to select any colors and save Hex value. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/demo-for-color-picker/)

💎 **Conditional Images Input**: Display different info based on the chosen images. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/conditional-images-input/?attach_id=325&ppom-meta=41,0)

💎 **Date Range**: Select two dates between from and to. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/demo-for-date-range-input/)

💎 **Divider Input**: Visually separates meta fields for better product page design. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/basic-divider-input/)

💎 **Domain Input**: Check web domain availability. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/basic-domain-input/)

💎 **Emojis Input**: [View Demo](https://demo-ppom-lite.vertisite.cloud/product/basic-emoji-input/)

💎 **File Upload**: Allow customers to upload files with configurable file types and size limits. Includes progress bar and thumbnail display. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/demo-for-file-upload-input/)

💎 **Fixed Price Input**: Set fixed prices with Add Option / First Option. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/fixed-price-input-with-add-option-first-option/)

💎 **Fonts Picker**: Allows you to insert text and select the desired font for it, offering a preview. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/basic-fonts-picker/)

💎 **HTML Content**: Add HTML tags, like p or h1 tags, to add more details for your extra fields. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/demo-for-basic-html-with-content/)

💎 **Image Cropper**: Allows users to upload and crop images. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/demo-for-basic-image-cropping-input/)

💎 **Image Dropdown Input**: Dropdown with images for complex pricing options like print packages. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/image-dropdown-input/)

💎 **Images Options**: Image input is just like Radio/Checkbox, but images can be uploaded against each option. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/demo-for-images-options/)

💎 **Measure Input**: Set prices for measure units like milk, clothes & frames, etc. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/demo-for-measure-input/)

💎 **Phone Input**: Phone number input field, useful for business cards and marketing products. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/demo-for-images-options/)

💎 **Price Matrix with Discount**: Set tiered or discount prices on bulk purchases. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/demo-for-price-matrix-discount/)

💎 **Personalized Preview**: Users can type text, customize font, and preview how it appears on the product image. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/basic-texter-input/)

💎 **Quantities Pack Input**: Create multiple-choice product pages where users can buy different quantities of product variants. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/quantities-pack-input/)

💎 **Quantity Option Input**: Add quantity fields for extras (e.g., additional bookmarks with a book purchase). [View Demo](https://demo-ppom-lite.vertisite.cloud/product/quantity-option-input/)

💎 **Radio Switcher Input**: Visual radio buttons with different images for each option. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/radio-switcher-input/)

💎 **Select Option Quantity Input**: This input allows you to display a dropdown with options along with their quantities. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/select-quantity-option-input/)

💎 **Superlist Input**: Predefined dropdowns for common data like languages, countries, and currencies. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/superlist-input/)

💎 **Text Counter**: This input is a special text input that can restrict the total number of words or characters. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/basic-text-counter/)

💎 **Timezone**: Let customers select a timezone from a pre-defined list. Admins can include or exclude specific zones. [View Demo](https://demo-ppom-lite.vertisite.cloud/product-category/timezone-input/)

💎 **Variation Matrix Input**: Allow customers to order different quantities for different options like sizes or colors. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/basic-variation-matrix-input/)

💎 **Variation Quantities**: Allow customers to order different quantities for different options. [View Demo](https://demo-ppom-lite.vertisite.cloud/product/demo-for-variation-quantities/)

## PPOM PRO Features:

💎 **More Conditional Logic Operators**: Expand conditional logic for text and numeric fields with operators like contains, regex, between, multiples, less than, greater than, is odd, is even, and more.

💎 **Custom CSS & Javascript**: Add custom CSS and JavaScript for full control over field appearance and behavior.

💎 **Apply via Product Tags**: Attach fields to products using product tags.

💎 **Options Prices Taxable**: Apply tax settings to product options for accurate pricing.

💎 **Weight Options**: Weight can be assigned for options.

💎 **Multiple Meta Groups**: Assign multiple meta groups to a single product.

💎 **Import/Export**: You can use PPOM to import or export your custom fields directly from PPOM settings.

💎 **[Instant Validation](https://www.youtube.com/watch?v=1IoABjkQ--I)**: Check required fields in real time without reloading the page.

💎 **PPOM Repeater**: Repeat meta-field groups as needed.

💎 **Compatibility with WooCommerce Currency Switcher**: Seamlessly switch currencies to accommodate global customers.

💎 **Compatibility with WPML Currency Switcher**: Offers dynamic currency switching to match customer location.

💎 **Compatibility with Wholesale Plugin**: Integrates with WooCommerce Wholesale for differentiated pricing structures.

💎 **Compatible with all WooCommerce themes**: Works with all WooCommerce themes, ensuring consistency and efficiency.


## More Add-ons in PPOM PRO:

✅ **Conditional Repeater**: Automatically repeat fields based on quantity entered. Example: customer orders 5 caps and gets 5 name fields for personalization. [VIEW DEMO](https://demo-ppom-lite.vertisite.cloud/product/personalized-caps-using-conditional-repeater/)

✅ **Cart Edit**: Allow customers to modify their orders from the cart page.

✅ **Fields Popup**: Display PPOM fields inside a popup on the product page.

✅ **Collapse Settings**: Control whether grouped fields start expanded or collapsed, and style them with custom colors, icons, and tab-style navigation.

✅ **Enquiry Form**: Collect custom customer inquiries directly from your product pages.

Interested in PPOM PRO? [Learn more](https://themeisle.com/plugins/ppom-pro/upgrade?utm_source=wordpressorg&utm_medium=readme&utm_campaign=interested-pro)

## Use Cases

🍰 **Bakery**: Customers choose cake sizes, flavors, and decorations.

💍 **Jewelry Store**: Offer material choices (gold, silver, platinum), gemstones, and custom engravings.

🌍 **Travel and Tours**: Let customers select destinations, accommodations, and activities with conditional options.

👕 **Custom Apparel**: Allow fabric, color, and design uploads for personalized clothing.

### See what real users say about us:

- “[Best than Best](https://wordpress.org/support/topic/best-than-best-2/)” - With help of this plugin, I could able to add some extra items to my main product with ability do increase and decrease the price. Thanks guys, keep it going…

- “[Perfect for Different Types of Websites](https://wordpress.org/support/topic/perfect-for-different-types-of-websites/)” - Great plugin that I use across 3 different types of website with no problems. Highly recommend it as its easy to use even for a beginner like me!

- “[Simply the best, better than all the rest](https://wordpress.org/support/topic/simply-the-best-better-than-all-the-rest-4/)” - This review is more about PPOM Pro, than the free version. However what’s considered Pro at the competion, is Free here. And what’s Pro about PPOM is actually Ultra. Features like custom font pickers are simply stellar. Saves months of coding. TL;DR: ThemeIsle has made the #1 PPOM plugin in the entire WooCommerce space.

- “[Amazing plugin](https://wordpress.org/support/topic/amazing-plugin-2602/)” - I love this plugin! I use the free version and I’m extremely happy with it. I would highly recommend it to anyone needing to add on extras to their products in WooCommerce.

### Support

Need help? Open a thread on the [Support Forum](https://wordpress.org/support/plugin/woocommerce-product-addon/).

### Documentation

View the [documentation](https://docs.themeisle.com/collection/1695-product-option-manager).

### Contribute

PPOM is open-source. Contribute on [GitHub](https://github.com/Codeinwp/woocommerce-product-addon).

### Useful Resources

- Read more about WordPress on our [blog](https://themeisle.com/blog/).
- Explore our [other plugins](https://themeisle.com/wordpress-plugins/?utm_source=wordpressorg&utm_medium=readme&utm_campaign=PPOM).

### How to report a security issue?
 
Plugin security is a core priority for us. If you identify a potential vulnerability, we ask that you disclose it responsibly.

Please follow the reporting protocols outlined on our [Security Page](https://themeisle.com/security/).

== Installation ==
1. Upload the plugin directory to the `/wp-content/plugins/` directory
2. Activate the plugin through the `Plugins` menu in WordPress
3. After activation, you can set options from the `WooCommerce -> PPOM Settings` menu.

== Screenshots ==

1. PPOM Fields Walkthrough
2. Create a Select Field
3. Add Custom Pricing to Options
4. Custom Fields Input Data is Available on the Cart and Order Details Pages
5. Attach Products by Name or Category
6. Apply Display Condition Rules


== Changelog ==

#### [Version 34.0.0](https://github.com/Codeinwp/woocommerce-product-addon/compare/v33.0.18...v34.0.0) (2026-05-13)

### New Features

  - Added a curated template library with one-click presets for common use cases such as pizza ordering, t-shirt personalization, made-to-measure, and jewelry engraving.
  - Added a live product page preview directly inside the field group editor.
  - Added Cart Edit support for the WooCommerce block-based Cart, bringing parity with the legacy shortcode cart.
  - Added the ability to build PPOM conditions based on WooCommerce product variations.

### Improvements

  - Improved the CSS/JS editors' layout, so it's easier to read and write code.
  - Shortened the random suffix added to uploaded file names, keeping them readable in cart, checkout, and order confirmation emails.
  - Revamped the field builder UI with a modernized modal layout, cleaner input styling, and a dedicated Advanced section for less-used options.
  - Replaced the modal-based Attach to Products workflow with inline select dropdowns and AJAX search.
  - Added an enable/disable toggle at the field group level, so admins can temporarily switch a group off without unassigning it.
  - Added auto-save and an unsaved-changes warning to the field group editor.
  - Improved the field-type picker with short descriptions and examples to help users tell similar field types apart.
  - Added a designed empty state to the fields list with clear next-step guidance.
  - Added a designed empty state to the PPOM Field Groups page and reworked the top navigation placement.
  - Replaced plain-text color inputs throughout PPOM with a native color picker plus hex input combo.
  - Improved the Personalization Preview creation screen with clearer purpose, guidance, and next steps.
  - Improved front-end field layout with baseline input/label/description styling and consistent vertical alignment for side-by-side fields.
  - Reworked the Integrations Settings tab with card-based layout, in-app API reference, a base URL display, and a masked, copyable secret key.
  - Improved the file upload field to show accepted file types and the maximum file size before the customer attempts to upload.
  - Replaced the support icon with a clearer, more accessible support button.
  - Improved delete UX: trash bin icons and a specific delete confirmation dialog with a red destructive button.
  - Performance: reduced database queries and PHP overhead on product pages.
  - Added Esc-to-close on the Add Field modal.
  - Allowed the field edit popup to float near the clicked field instead of being fixed at the top of the page.
  - Enhanced security.
  - Fixed typos and improved placeholder copy in admin settings.

### Fixes

  - Fixed the file upload field from crashing.
  - Fixed a PHP 8+ deprecation warning and headers already sent error when saving certain WooCommerce settings.
  - Fixed a separate stripslashes() fatal error where an array was passed instead of a string.
  - Fixed the Timezone field from crashing with DateInvalidTimeZoneException on servers where the timezone list contained entries unsupported by PHP.
  - Fixed a fatal TypeError when a text input add-on price was prefixed with $ or otherwise non-numeric.
  - Fixed a fatal error in the REST API / Quick View context where WC()->cart was null, breaking PPOM fields in product popups.
  - Fixed an SQL syntax error logged during plugin activation, causing noisy logs.
  - Fixed multiple Personalization Preview bugs with multiple text boxes — color pickers, settings panels, and duplicate DOM IDs no longer break beyond the first text box.
  - Fixed an undefined array key warning when adding a new text box to a Personalization Preview that had not been resized.
  - Fixed multi-group rendering: custom CSS/JS from all attached field groups now renders, not just the first group. Stale group references on products are cleaned up when a group is deleted.
  - Fixed image-based PPOM fields not appearing in the WooCommerce Cart Block (only the legacy shortcode cart was displaying them).
  - Fixed detaching a PPOM group from a specific product tag.
  - Fixed the User Roles option disappearing after saving a PPOM field configured with Visibility → By Role.
  - Fixed the Images field treating any value in Max Image Select as requiring the field.
  - Fixed the Stock option disappearing after saving an Image Dropdown field.
  - Fixed the Pack Size option in the Quantities Pack field — the Add to Cart button no longer requires hitting the exact pack size before enabling.
  - Fixed the Change Image button on the Image Cropping field so it clears all selections instead of replacing one image.
  - Fixed conditional logic not saving for Select fields when an Image field was used as the controlling option.
  - Fixed the file upload field not working on iOS Safari when the file field had conditional logic attached.
  - Fixed price values not being converted with the WooCommerce Multilingual & Multicurrency (WCML) plugin (currency symbol changed, numeric price stayed the same).
  - Fixed the Update Cart button and quantity field alignment in the Cart Items pop-up.
  - Fixed the name of the plugin in the description.




[See changelog for all versions](https://github.com/Codeinwp/woocommerce-product-addon/blob/master/CHANGELOG.md).


== Frequently Asked Questions ==
= Where can I find documentation for WooCommerce Product Addon? =
[Installation & Overview](https://docs.themeisle.com/article/1700-personalized-product-meta-manager)
[Docs for Free Inputs](https://docs.themeisle.com/article/1701-ppom-free-input-types)
= Can I add fields to Variable Products? =
Yes.
= Are there any field limits? =
No, but your server's PHP memory or POST size limits may affect how many fields load correctly. Check with your host if you experience issues.
= Can I add prices to options? =
Yes, prices can be added to Select, Radio, and Checkbox fields.
= Can I see a demo? =
Yes, [view demo here](https://demo-ppom-lite.vertisite.cloud/).

== Upgrade Notice ==
* Version 10 introduced major changes.
* The Free Version must be installed alongside the PRO version.
