WP Manifestindependent plugin directory
manifest / ecommerce / flexproduct-light

FlexProduct — Product Options, Product Add-Ons & Conditional Logic for WooCommerce

Custom product options for WooCommerce with free conditional logic and live price updates — the free edition of FlexProduct. No jQuery, no add-on stack.

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/xodesignworks/flexproduct-light/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

Product options with conditional logic and live price updates. Extra product add-ons without buying four separate plugins.

Description

Conditional logic is the feature every product-options plugin sells separately. Here it is free — and the price updates the moment a customer changes their mind.

FlexProduct makes any WooCommerce product configurable. Add text fields, dropdowns, checkboxes, radio buttons, colour and image swatches, file uploads, dates and range sliders — each one able to change the price, each one able to show or hide the others. Engraving, gift wrap, size and finish, upload-your-artwork, made-to-measure: all of it without a line of code.

The official WooCommerce Product Add-Ons does not support conditional logic at all, and the usual workaround is buying three or four separate add-ons to get there. FlexProduct includes it in the free plugin.

Why shops choose it

  • Conditional logic, free. Show or hide any field based on any other, with nested groups and the operators you would expect — equals, not equals, greater, less, contains, empty. Long forms become short ones that change as the customer answers.
  • Eleven field types, one plugin. Text, number, dropdown, checkbox, radio, colour swatch, image swatch, file upload, date and range slider, each optional or required. No stack of add-ons to license and update.
  • The price moves as fast as the customer does. Recalculation happens in the browser first, so the total updates instantly; the server confirms it a moment later through a REST endpoint. No page reloads, no admin-ajax.php, no spinner between the click and the number.
  • Pricing that cannot be faked. Every add to cart, cart recalculation and order line is re-priced by PHP. Whatever the browser claims about price is ignored — a customer cannot edit their own total.
  • Two engines, proven to agree. The automated suite checks the PHP and JavaScript pricing engines against each other across 204 pricing scenarios and 670 formula expressions, so the number the shopper sees is the number they are charged.
  • Charge the way the product works. A fixed amount, a percentage of the product price, or per character — so engraving priced by the letter takes one setting, not a plugin.
  • Assign options once, use them everywhere. Option groups apply globally, per category or per product, with a per-product override for the exception that always turns up.
  • File uploads you can trust. Type, size and surcharge rules enforced in the browser and again on the server — never only in the browser.
  • The choices follow the order. A summary above the add-to-cart button carries into the cart, the order and the confirmation email, so production knows what to make without opening the site.
  • Block cart and checkout work properly. Option data goes through Store API item data, so the blocks show the configuration exactly as the classic templates do. HPOS supported.
  • Fast where it counts. About 11 KB gzipped on the storefront, and only on products that actually have options. Vanilla JavaScript — no jQuery, no jQuery UI.
  • An escape hatch for stubborn themes. If a theme has replaced the add-to-cart template, point the plugin at a hook it does fire, or drop the shortcode inside the form. No theme surgery.

Perfect for

  • Personalised and engraved goods
  • Print shops taking customer artwork
  • Made-to-measure and cut-to-size
  • Furniture, blinds and joinery
  • Gift wrapping, add-ons and upsells
  • Anything quoted by size, area or weight

Privacy first

FlexProduct makes no outbound requests. No telemetry, no analytics, no calling home, no third party services — uploaded files stay in your own uploads folder and option data stays in your own database.

For developers

Option groups are a custom post type with a versioned JSON schema in postmeta — no wide custom tables. Pricing and conditional logic live in framework-free PHP classes with a matching JavaScript port, and the test suite fails if the two ever disagree. Everything worth changing has a filter: the render hook, the resolved fields, the base price, the calculated result, the accepted upload types. There is a [xodw_fp_options] shortcode for themes that build their own add-to-cart form, and a REST namespace at xodw-fp/v1 for anything you would rather do yourself.

Installation

  1. Install and activate WooCommerce.
  2. Install FlexProduct from Plugins → Add New, or upload the zip.
  3. Go to WooCommerce → Option groups and create your first group.
  4. Choose where it applies: all products, selected categories, or single products.

Setting up a group of three or four fields with one conditional rule takes about five minutes and needs no documentation.

Frequently Asked Questions

Is conditional logic really free?

Yes, including nested rule groups. It is the whole point of the plugin, not an upsell.

Can a customer manipulate the price in the browser?

No. Submitted values are sanitized and re-priced by PHP on every cart calculation, and anything the browser sends about price is ignored.

Does it work with the block based cart and checkout?

Yes. Option data is exposed through the Store API item data, so the Cart and Checkout blocks show the configuration exactly like the classic templates. HPOS is supported too.

Does it need jQuery?

No. Neither the storefront nor the admin field builder loads jQuery or jQuery UI.

Will it slow down my product pages?

The storefront bundle is about 11 KB gzipped and is only enqueued on products that actually have options. A form with 30 fields and 10 conditional rules re-prices in well under a millisecond on a desktop, and stays far inside the budget on a throttled phone.

Does it create custom database tables?

No. Option groups are a custom post type and their fields are one structured JSON blob in postmeta.

The options do not show up on my product page

Your theme or another plugin has replaced WooCommerce's add-to-cart template, so the hook FlexProduct renders on is never fired — the giveaway is a product page with no form.cart markup. Point the plugin at a hook your template does fire with the xodw_fp_render_hook filter, or place the [xodw_fp_options] shortcode inside that form.

Can an unconfigured product slip into an order?

No. Besides refusing the form submission, FlexProduct re-validates the whole cart on the cart page, on the classic checkout and through the Store API, so an item added by another plugin or from a product grid cannot be bought with a required option missing.

Which files can customers upload?

Only the extensions you allow, intersected with the ones WordPress already permits, with a size limit per field. Both rules are enforced in the browser and again on the server, and the real file type is verified rather than trusted from its name.

Is it translation ready?

Yes. Every string goes through the flexproduct text domain, and translations come from translate.wordpress.org.

Does it send any data to external servers?

No. FlexProduct makes no outbound requests at all.

What happens to my data if I delete the plugin?

Nothing, unless you tick "Delete all FlexProduct data" on the settings screen first. Deleting the plugin without that box ticked leaves your option groups untouched.

Screenshots

  1. The field builder: field types, pricing and nested conditional rules.
  2. A configurable product on the storefront, with the total updating as options change.
  3. The choice summary carried into the cart and the order.
  4. Settings and module switches.

Changelog

1.0.0

  • First release: 11 field types, conditional logic with nested groups, fixed, percentage and per-character pricing, live price updates over REST, validated file uploads, global, category and per-product assignment, the choice summary, Cart & Checkout blocks and HPOS support.

Upgrade Notice

1.0.0

First release.