{"id":336302,"date":"2026-07-07T12:26:10","date_gmt":"2026-07-07T12:26:10","guid":{"rendered":"https:\/\/fr.wordpress.org\/plugins\/build-your-own-for-woocommerce\/"},"modified":"2026-09-18T18:44:34","modified_gmt":"2026-09-18T18:44:34","slug":"tlloancy-step-configurator-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/en-au.wordpress.org\/plugins\/tlloancy-step-configurator-for-woocommerce\/","author":22011295,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.5.2","stable_tag":"1.5.2","tested":"7.1.1","requires":"6.0","requires_php":"8.1","requires_plugins":null,"header_name":"Tlloancy Step Configurator for WooCommerce","header_author":"tlloancy","header_description":"Generic step-by-step product configurator with WooCommerce integration.","assets_banners_color":"d0cec7","last_updated":"2026-09-18 18:44:34","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":478,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"tlloancy","date":"2026-07-07 12:25:36","revision":3599031},"1.1.0":{"tag":"1.1.0","author":"tlloancy","date":"2026-07-17 15:31:57","revision":3611735},"1.2.0":{"tag":"1.2.0","author":"tlloancy","date":"2026-07-17 21:37:14","revision":3612012},"1.2.1":{"tag":"1.2.1","author":"tlloancy","date":"2026-07-17 22:05:13","revision":3612030},"1.2.2":{"tag":"1.2.2","author":"tlloancy","date":"2026-07-18 14:06:17","revision":3612649},"1.2.3":{"tag":"1.2.3","author":"tlloancy","date":"2026-07-18 15:00:19","revision":3612714},"1.2.4":{"tag":"1.2.4","author":"tlloancy","date":"2026-07-18 18:51:52","revision":3612909},"1.2.5":{"tag":"1.2.5","author":"tlloancy","date":"2026-07-18 19:55:23","revision":3612955},"1.2.6":{"tag":"1.2.6","author":"tlloancy","date":"2026-09-15 11:16:27","revision":3696851},"1.2.7":{"tag":"1.2.7","author":"tlloancy","date":"2026-09-15 20:13:56","revision":3697658},"1.3.0":{"tag":"1.3.0","author":"tlloancy","date":"2026-09-16 01:03:30","revision":3697813},"1.4.0":{"tag":"1.4.0","author":"tlloancy","date":"2026-09-16 12:37:08","revision":3698585},"1.4.1":{"tag":"1.4.1","author":"tlloancy","date":"2026-09-16 20:57:29","revision":3699227},"1.5.0":{"tag":"1.5.0","author":"tlloancy","date":"2026-09-18 14:27:37","revision":3702137},"1.5.1":{"tag":"1.5.1","author":"tlloancy","date":"2026-09-18 15:08:15","revision":3702205},"1.5.2":{"tag":"1.5.2","author":"tlloancy","date":"2026-09-18 18:44:34","revision":3702578}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3599031,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3599031,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"tlsc\/wizard":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"tlsc\/wizard","title":"Tlloancy Step Configurator Wizard","category":"widgets","icon":"admin-customizer","description":"Interactive step-by-step product configurator.","keywords":["wizard","configurator","tlloancy"],"textdomain":"tlloancy-step-configurator-for-woocommerce","supports":{"html":false,"align":["wide","full"]},"editorScript":"file:.\/index.js"}},"tagged_versions":["1.0.0","1.1.0","1.2.0","1.2.1","1.2.2","1.2.3","1.2.4","1.2.5","1.2.6","1.2.7","1.3.0","1.4.0","1.4.1","1.5.0","1.5.1","1.5.2"],"block_files":[],"assets_screenshots":{"screenshot-1.gif":{"filename":"screenshot-1.gif","revision":3599031,"resolution":"1","location":"assets","locale":"","width":800,"height":427}},"screenshots":{"1":"Demo of the step-by-step configurator wizard with live pricing."}},"plugin_section":[],"plugin_tags":[6410,851,270469,17648,286],"plugin_category":[45],"plugin_contributors":[232640],"plugin_business_model":[],"class_list":["post-336302","plugin","type-plugin","status-publish","hentry","plugin_tags-builder","plugin_tags-configurator","plugin_tags-tlloancy","plugin_tags-wizard","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-tlloancy","plugin_committers-tlloancy"],"banners":{"banner":"https:\/\/ps.w.org\/tlloancy-step-configurator-for-woocommerce\/assets\/banner-772x250.png?rev=3599031","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/tlloancy-step-configurator-for-woocommerce\/assets\/icon-256x256.png?rev=3599031","icon_2x":"https:\/\/ps.w.org\/tlloancy-step-configurator-for-woocommerce\/assets\/icon-256x256.png?rev=3599031","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/tlloancy-step-configurator-for-woocommerce\/assets\/screenshot-1.gif?rev=3599031","caption":"Demo of the step-by-step configurator wizard with live pricing."}],"raw_content":"<!--section=description-->\n<p>Tlloancy Step Configurator for WooCommerce lets customers assemble a customizable product through a mobile-first wizard, with live pricing and WooCommerce cart integration.<\/p>\n\n<ul>\n<li>Reusable generic engine (steps, options, variants)<\/li>\n<li>Data-driven flows (config.flow, step.applies_to, option.unlock_flow, limit_rules)<\/li>\n<li>CSV \/ XML nomenclature import and export<\/li>\n<li>Sequential wizard with slide-in menu, progress bar, and photos on cards when you attach them<\/li>\n<li>Optional accordion layout (Settings) \u2014 all sections on one page, product-page style<\/li>\n<li>Numeric steps (min \/ max \/ unit) and an optional base-price formula on the variant<\/li>\n<li>Base price plus supplements, with mandatory server-side revalidation<\/li>\n<li>WooCommerce integration via cart_item_data<\/li>\n<li>Gutenberg block <code>tlsc\/wizard<\/code><\/li>\n<li>Shortcode <code>[tlsc_wizard]<\/code><\/li>\n<li>Demo seed isolated in <code>\/seed-data<\/code><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Copy the <code>tlloancy-step-configurator-for-woocommerce<\/code> folder to <code>wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin<\/li>\n<li>WooCommerce must be installed and active<\/li>\n<li>Insert the <strong>Tlloancy Step Configurator Wizard<\/strong> block or shortcode on a page<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20customize%20the%20steps%3F\"><h3>How do I customize the steps?<\/h3><\/dt>\n<dd><p>Use <strong>Tlloancy Configurator &gt; Steps<\/strong>, <strong>Options<\/strong> and <strong>Configs<\/strong> in the WordPress admin.<\/p><\/dd>\n<dt id=\"how%20do%20i%20import%20a%20bom%20%2F%20nomenclature%3F\"><h3>How do I import a BOM \/ nomenclature?<\/h3><\/dt>\n<dd><p>BOM means Bill of Materials. Use <strong>Tlloancy Configurator &gt; Import CSV \/ XML<\/strong>, or see <code>docs\/USER-GUIDE.md<\/code> (English), <code>docs\/MODE-DEMPLOI.md<\/code> (French), and <code>seed-data\/examples\/<\/code>.<\/p><\/dd>\n<dt id=\"where%20is%20the%20documentation%3F\"><h3>Where is the documentation?<\/h3><\/dt>\n<dd><ul>\n<li>English: <code>docs\/USER-GUIDE.md<\/code><\/li>\n<li>French: <code>docs\/MODE-DEMPLOI.md<\/code><\/li>\n<\/ul><\/dd>\n<dt id=\"can%20customers%20buy%20the%20configurable%20product%20from%20the%20product%20page%3F\"><h3>Can customers buy the configurable product from the product page?<\/h3><\/dt>\n<dd><p>No. The shell product is only sold through the wizard. Native Add to cart and express-pay buttons on that product are blocked.<\/p><\/dd>\n<dt id=\"how%20do%20photos%20work%20in%20the%20wizard%3F\"><h3>How do photos work in the wizard?<\/h3><\/dt>\n<dd><p>Configurations with an image show a full-width photo on the card. Options with an image show a small rounded thumbnail. No image means a pictogram only. Next, Back and the steps menu scroll the page back to the top of the wizard.<\/p><\/dd>\n<dt id=\"where%20does%20the%20customer%20see%20the%20configuration%3F\"><h3>Where does the customer see the configuration?<\/h3><\/dt>\n<dd><p>Cart, checkout, the thank-you page, My Account \u2192 Orders, and the customer order emails. The merchant \u201cNew order\u201d email stays short; the full breakdown is on the WooCommerce order screen.<\/p><\/dd>\n<dt id=\"will%20updating%20break%20an%20existing%20configurator%20%28e.g.%20a%20salad%20bar%29%3F\"><h3>Will updating break an existing configurator (e.g. a salad bar)?<\/h3><\/dt>\n<dd><p>No. Numeric steps, price formulas and the accordion layout are opt-in. Existing steps stay single\/multiple, an empty formula keeps base price + supplements, and the layout defaults to step-by-step.<\/p><\/dd>\n<dt id=\"how%20do%20i%20price%20a%20product%20from%20width%20%C3%97%20height%3F\"><h3>How do I price a product from width \u00d7 height?<\/h3><\/dt>\n<dd><p>Add numeric steps whose slugs are the formula variables (e.g. largeur, hauteur). On the variant, set an optional base-price formula such as max({base}, {largeur} * {hauteur} \/ 10000 * 89). Leave the formula empty to keep classic pricing. See docs\/USER-GUIDE.md.<\/p><\/dd>\n<dt id=\"what%20is%20the%20accordion%20layout%3F\"><h3>What is the accordion layout?<\/h3><\/dt>\n<dd><p>Settings \u2192 Wizard layout. Step by step is the original wizard (one screen, Next \/ Back). Accordion lists every section on one page \u2014 better for measured products on a product page. Only one section stays open; click the open heading to fold it. Switching layout does not change saved data.<\/p><\/dd>\n<dt id=\"can%20the%20customer%20unselect%20a%20variant%3F\"><h3>Can the customer unselect a variant?<\/h3><\/dt>\n<dd><p>Yes. Click the selected configuration card again to clear it. Later steps hide until they pick another. Add to cart stays disabled until a variant is chosen. Rename the first step under Settings \u2192 First-step label (e.g. Type de confection, Model).<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.5.2<\/h4>\n\n<ul>\n<li>Variant cards: click the selected configuration again to deselect it. Dependent steps leave the wizard until another variant is chosen.<\/li>\n<li>fr_FR catalogue for 1.5 wizard\/admin strings (Personalize your product, Done, formulas, numeric fields) plus a compiled .mo so the front end is no longer mixed EN\/FR.<\/li>\n<li>Docs (USER-GUIDE \/ MODE-DEMPLOI) cover deselecting a variant and the first-step label.<\/li>\n<\/ul>\n\n<h4>1.5.1<\/h4>\n\n<ul>\n<li>Accordion: only one section open at a time; click the open heading (including the first variant step) to fold it. Choosing a variant no longer jumps to the next section by itself.<\/li>\n<li>Accordion Add to cart: full-width control on a quiet bar \u2014 no coral strip under a faded button.<\/li>\n<li>Settings: layout and palette cards deselect immediately when you pick another (no leftover highlight before Save).<\/li>\n<li>Demo seed and steel palette renamed Maison Thomas (<code>seed-data\/maison-thomas.php<\/code>). An existing <code>muka<\/code> palette option still loads that steel theme.<\/li>\n<li>Docs (USER-GUIDE \/ MODE-DEMPLOI) cover accordion folding, the cart button, and the Maison Thomas seed.<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>Numeric step type (min \/ max \/ increment \/ unit \/ default). The step slug is the formula variable. Existing single\/multiple steps are unchanged.<\/li>\n<li>Optional variant base-price formula ({slug} tokens, + \u2212 \u00d7 \u00f7, min\/max\/round\/ceil\/floor). Empty formula = previous pricing (base + supplements + overage).<\/li>\n<li>Optional option effect: add a delta to a numeric step before the formula (e.g. a breaking hem adds 2 cm to height).<\/li>\n<li>Settings: wizard layout \u2014 Step by step (default) or Accordion. Missing option keeps the original wizard.<\/li>\n<li>Admin screens stacked full-width (form then list) so fields no longer overflow the list. Step type toggles choice limits vs numeric bounds.<\/li>\n<li>Sample import seed-data\/examples\/nomenclature-dimensions-sample.xml. Docs (USER-GUIDE \/ MODE-DEMPLOI) cover dimensions, formulas and layout.<\/li>\n<li>CSV\/XML import\/export: extra optional columns\/attributes (backward compatible).<\/li>\n<\/ul>\n\n<h4>1.4.1<\/h4>\n\n<ul>\n<li>Wizard: a configuration with an image uses a full-width photo band; an option with an image uses a 72\u00d772 rounded thumbnail; no image still shows a pictogram (never an empty band)<\/li>\n<li>Next \/ Back \/ the steps menu scroll the page back to the top of the wizard; the page itself still scrolls with the mouse<\/li>\n<li>Admin: variant\/option image previews use the same rounded rectangle crop as the wizard, not a circle<\/li>\n<li>Docs and FAQ updated for card photos and step-change scroll<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Steps admin: per-variant min\/max\/included\/required is a table (tick a variant to override) instead of a JSON textarea \u2014 limit_rules is built from that POST array, not from typed JSON<\/li>\n<li>Fixed: ticking a variant did not enable the Min\/Max\/Included\/Required inputs (the row stayed greyed out)<\/li>\n<li>Max on a step shows how many options currently exist for that step<\/li>\n<li>tlsc_configs.image_url (dbDelta); image picker on Variants (media enqueued on configurator admin screens); URL stored on the cart config payload; wizard formula cards, cart \/ order \/ admin thumbnails and customer-email images use it; XML import\/export adds an image attribute (CSV schema unchanged)<\/li>\n<li>Native add-to-cart validation, Store API add-to-cart\/cart-item, and cart check reject or remove the shell product without tlsc_selections; product-page add-to-cart (classic + blocks CSS) and the loop add-to-cart link are hidden; Stripe \/ PayPal \/ WooPayments product express buttons are disabled<\/li>\n<li>Order-item recap (formula + steps) on the thank-you page, My Account and customer emails; merchant \u201cNew order\u201d emails skip it<\/li>\n<li>Plugin Check: recap thumbnail output goes through wp_kses; Store API exception messages are escaped<\/li>\n<li>Fixed: with overage_price set, the wizard hint used max (e.g. 2\/13) instead of included (2\/2); option cards kept saying Included after the included quota was full<\/li>\n<li>Last wizard step shows \u201cAdding\u2026\u201d while the cart request runs<\/li>\n<li>Gutenberg block editor strings go through wp.i18n (wp_set_script_translations); admin Error \/ Network error alerts are translated<\/li>\n<li>Docs (USER-GUIDE \/ MODE-DEMPLOI) and readme FAQ updated for wizard-only purchase, customer recap, and the included-quota counter<\/li>\n<li>fr_FR .po\/.mo and .pot updated for the new strings<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Steps can now define an \"included\" selection count (per variant, in limit_rules) plus a flat overage_price \u2014 selections beyond the included count are charged instead of being blocked outright, up to the (now separately raised) max<\/li>\n<li>Wizard: live price and selection hint reflect the overage as soon as the client crosses the included threshold, not just at checkout<\/li>\n<li>Fixed: the front-end wizard didn't split a multi-value unlock_flow (added in 1.2.7) on comma, so a combo option unlocking two flows at once showed neither of them client-side despite the server accepting it<\/li>\n<li>Maison Thomas seed: Ingr\u00e9dients bruts\/nobles now allow selecting beyond the included amount (2 for Petite, 3 for Grande) at +1,50\u20ac each<\/li>\n<\/ul>\n\n<h4>1.2.7<\/h4>\n\n<ul>\n<li>Option unlock_flow now accepts several comma-separated flows (e.g. dessert,boisson), so one option (e.g. a combo) can unlock more than one extra sub-flow at once<\/li>\n<li>Fixed: CSV\/XML import used to sanitize unlock_flow as a single slug directly at insert time, silently mangling multi-value input \u2014 now shares the same sanitizer as the admin form<\/li>\n<\/ul>\n\n<h4>1.2.6<\/h4>\n\n<ul>\n<li>Order admin screen: configurator selections now shown as a formatted breakdown (grouped by step) instead of raw JSON meta<\/li>\n<li>CSV \/ XML nomenclature export (Import \/ Export screen), mirroring the existing import format \u2014 usable as a backup or as a template for another install<\/li>\n<\/ul>\n\n<h4>1.2.5<\/h4>\n\n<ul>\n<li>Wizard palette setting: Default (coral), Salade (herb green), Maison Thomas (concrete &amp; steel)<\/li>\n<li>Presets inject CSS variables on the wizard only; factory coral remains the default<\/li>\n<\/ul>\n\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>Same screen: group steps that share a same_screen code on one wizard screen<\/li>\n<li>Optional steps: clearer hints + Next becomes Skip when nothing is selected<\/li>\n<li>Safer required casting from DB (string \"0\" no longer treated as true)<\/li>\n<li>Optional single-select: re-click to deselect<\/li>\n<li>Updated fr_FR translations; wizard CSS cache-bust via filemtime<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Plugin Check: drop load_plugin_textdomain, WP 6.0-safe list check, prefixed view variables<\/li>\n<li>Import notices via user transient (no unsanitized error query args)<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Extensibility hooks for addons: tlsc_cart_item_data, tlsc_pre_add_to_cart, tlsc_add_to_cart_request<\/li>\n<li>JS events tlsc:beforeAddToCart and tlsc:stepShown<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Configurable first-step label (Settings \u2192 Formula \/ Pack \/ Configuration\u2026)<\/li>\n<li>Dynamic step hints from effective min\/max\/required (including limit_rules)<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Data-driven flows: config.flow, step.applies_to (comma-separated), option.unlock_flow<\/li>\n<li>Per-config limit_rules JSON on steps<\/li>\n<li>CSV \/ XML nomenclature import (admin + TLSC_Importer + tlsc_import_payload filter)<\/li>\n<li>Generic demo seed (no client branding)<\/li>\n<li>English UI source strings + languages\/*.pot and fr_FR translation<\/li>\n<li>Bilingual docs: USER-GUIDE.md (EN) + MODE-DEMPLOI.md (FR)<\/li>\n<li>Sample industrial-style CSV\/XML under seed-data\/examples\/<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Step scope applies_to<\/li>\n<li>Wizard + pricing filter applicable steps<\/li>\n<li>TLSC_Activator::reseed()<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Generic step-by-step product configurator with WooCommerce integration.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/336302","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=336302"}],"author":[{"embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/tlloancy"}],"wp:attachment":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=336302"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=336302"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=336302"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=336302"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=336302"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=336302"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}