{"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-10-11T01:03:29","modified_gmt":"2026-10-11T01:03:29","slug":"tlloancy-step-configurator-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/pcd.wordpress.org\/plugins\/tlloancy-step-configurator-for-woocommerce\/","author":22011295,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.7.1","stable_tag":"1.7.1","tested":"7.1.3","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-10-11 01:03:29","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":1047,"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},"1.5.3":{"tag":"1.5.3","author":"tlloancy","date":"2026-09-25 13:33:31","revision":3713116},"1.5.4":{"tag":"1.5.4","author":"tlloancy","date":"2026-09-25 14:19:07","revision":3713171},"1.5.5":{"tag":"1.5.5","author":"tlloancy","date":"2026-09-26 23:33:59","revision":3714841},"1.5.6":{"tag":"1.5.6","author":"tlloancy","date":"2026-09-29 11:32:05","revision":3718910},"1.5.7":{"tag":"1.5.7","author":"tlloancy","date":"2026-09-30 18:29:08","revision":3721844},"1.5.8":{"tag":"1.5.8","author":"tlloancy","date":"2026-10-02 09:15:35","revision":3724436},"1.5.9":{"tag":"1.5.9","author":"tlloancy","date":"2026-10-02 20:22:05","revision":3725453},"1.6.0":{"tag":"1.6.0","author":"tlloancy","date":"2026-10-05 18:48:49","revision":3729505},"1.7.0":{"tag":"1.7.0","author":"tlloancy","date":"2026-10-10 17:16:27","revision":3738422},"1.7.1":{"tag":"1.7.1","author":"tlloancy","date":"2026-10-11 01:03:29","revision":3738818}},"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","attributes":{"configurator":{"type":"string","default":""}},"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","1.5.3","1.5.4","1.5.5","1.5.6","1.5.7","1.5.8","1.5.9","1.6.0","1.7.0","1.7.1"],"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>Several configurators per shop, each attached to its own WooCommerce product (blinds on one, salads on another)<\/li>\n<li>The wizard sits on the product page by itself, or anywhere with the block or the shortcode<\/li>\n<li>Quantity field on the wizard; the cart line carries the quantity and the unit price<\/li>\n<li>Weight per variant and per option: the cart line weighs what the customer chose, so weight-based shipping rates apply<\/li>\n<li>Block cart and block checkout show the variant and the full list of choices, with the card photo<\/li>\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>Unavailable options: hide the card, or keep it greyed out and not selectable<\/li>\n<li>In-admin Guide: one made-to-measure walkthrough, both layouts, with a glossary<\/li>\n<li>Variant card order: an Order field, then price when two variants share the same number<\/li>\n<li>Numeric steps (min \/ max \/ unit) and an optional base-price formula on the variant. A card step\u2019s slug in that formula is the selected supplement<\/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>, with a configurator picker in the block sidebar<\/li>\n<li>Shortcode <code>[tlsc_wizard configurator=\"slug\"]<\/code><\/li>\n<li>Demo catalog (salad bar) loaded on demand from Import \/ Export<\/li>\n<li>Optional data removal when the plugin is deleted (Settings \u2192 Plugin removal)<\/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. WooCommerce must be installed and active<\/li>\n<li>Open <strong>Tlloancy Configurator \u2192 Configurators<\/strong>. Create a configurator: name it, attach one of your simple products or let the plugin create a hidden one, pick the first-step label and the layout<\/li>\n<li>Fill its catalog from <strong>Variants &amp; Pricing<\/strong>, <strong>Steps<\/strong> and <strong>Options<\/strong>, or load the demo from <strong>Import \/ Export<\/strong> (the Guide walks through one product click by click)<\/li>\n<li>The wizard is already on the attached product page. To show it elsewhere, insert the <strong>Tlloancy Step Configurator Wizard<\/strong> block and pick the configurator in the sidebar, or use <code>[tlsc_wizard configurator=\"slug\"]<\/code><\/li>\n<li>On the WooCommerce product, set the shipping class and tax status. Weights go on the variants and options<\/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; Variants &amp; Pricing<\/strong>, <strong>Steps<\/strong> and <strong>Options<\/strong> in the WordPress admin. The Steps list shows how many options each step has; the Options list can be filtered by step.<\/p><\/dd>\n<dt id=\"is%20there%20demo%20data%3F\"><h3>Is there demo data?<\/h3><\/dt>\n<dd><p>Yes. <strong>Tlloancy Configurator &gt; Import \/ Export &gt; Load the demo<\/strong> installs a complete salad bar. It replaces the current catalog after a confirmation; export first if you want to keep what you have.<\/p><\/dd>\n<dt id=\"does%20the%20configurable%20product%20ship%3F\"><h3>Does the configurable product ship?<\/h3><\/dt>\n<dd><p>Yes, unless the attached WooCommerce product is marked Virtual. Each variant and each option has a Weight field in the shop weight unit. The cart line weighs the variant plus the chosen options, times the quantity; when all of them are 0 the product weight is used. Weight-based shipping rates and the shipping class set on the product apply. Tick Virtual on the product if nothing is shipped: the Weight fields then stay out of the admin forms.<\/p><\/dd>\n<dt id=\"can%20i%20run%20several%20configurators%20on%20one%20shop%3F\"><h3>Can I run several configurators on one shop?<\/h3><\/dt>\n<dd><p>Yes. <strong>Tlloancy Configurator \u2192 Configurators<\/strong> lists them. Each one has its own name, slug, first-step label, layout, WooCommerce product and catalog. The bar under the title of Variants &amp; Pricing, Steps, Options and Import \/ Export says which configurator you are editing and switches to another one.<\/p><\/dd>\n<dt id=\"which%20product%20does%20the%20wizard%20sell%3F\"><h3>Which product does the wizard sell?<\/h3><\/dt>\n<dd><p>The one attached to the configurator. Attach any simple product you already sell, or let the plugin create a hidden product named after the configurator. A product belongs to one configurator at a time. Deleting a configurator keeps its product.<\/p><\/dd>\n<dt id=\"can%20the%20customer%20choose%20a%20quantity%3F\"><h3>Can the customer choose a quantity?<\/h3><\/dt>\n<dd><p>Yes, when <strong>Let the customer choose a quantity<\/strong> is ticked on the configurator and the product is not sold individually. The wizard shows a quantity field next to Add to cart, the total follows it, and the cart line carries the quantity. Stock on the product is checked.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20delete%20the%20plugin%3F\"><h3>What happens when I delete the plugin?<\/h3><\/dt>\n<dd><p>Deactivating keeps everything. Deleting the plugin removes its tables, settings and the hidden products it created only when <strong>Settings \u2192 Plugin removal<\/strong> is ticked. Products you attached yourself are detached, not deleted.<\/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=\"which%20currency%20is%20used%3F\"><h3>Which currency is used?<\/h3><\/dt>\n<dd><p>The currency and symbol position from WooCommerce \u2192 Settings \u2192 General. The wizard, the cart and the order use that format.<\/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>Only through the wizard. With <strong>Show the wizard on the product page<\/strong> ticked, the wizard replaces the native Add to cart under the product summary, and the shop grid button reads Configure. Native Add to cart and express-pay buttons on that product are blocked. Untick it to sell only through pages that carry the block or the shortcode.<\/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. In the accordion, OK and the steps menu scroll the opened section up under the price bar.<\/p><\/dd>\n<dt id=\"does%20an%20import%20rename%20the%20product%3F\"><h3>Does an import rename the product?<\/h3><\/dt>\n<dd><p>No. Import replaces the catalog of the configurator shown in the bar, and leaves the product name already set in WooCommerce. The demo name is used only when the configurator has no product yet.<\/p><\/dd>\n<dt id=\"do%20photos%20and%20weights%20survive%20an%20import%3F\"><h3>Do photos and weights survive an import?<\/h3><\/dt>\n<dd><p>Export first, then import that file. CSV and XML keep the photo URL on variants and options, the weight, extra info, whether an option can be ordered, and whether a variant is visible. A file without the image_url column clears the photos; without the weight column, weights are set to 0. The picture files stay in the Media Library.<\/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=\"do%20i%20need%20numeric%20steps%20or%20a%20formula%3F\"><h3>Do I need numeric steps or a formula?<\/h3><\/dt>\n<dd><p>Only for measured products. Card steps alone give a base price plus supplements. Numeric steps add typed values (width, height\u2026) and a formula on the variant can price from them.<\/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). The slug of a card step is the sum of the selected options\u2019 supplements, or 0 when none is selected. When the formula names that slug, those supplements are not added again. Leave the formula empty to keep classic pricing. See docs\/USER-GUIDE.md.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20available%20for%20order%20is%20off%3F\"><h3>What happens when Available for order is off?<\/h3><\/dt>\n<dd><p>Settings \u2192 Unavailable options. Hide removes the card. Show as unavailable keeps it greyed out, labelled unavailable, and not selectable. The cart still rejects that option.<\/p><\/dd>\n<dt id=\"where%20is%20the%20in-admin%20guide%3F\"><h3>Where is the in-admin guide?<\/h3><\/dt>\n<dd><p>Tlloancy Configurator \u2192 Guide. It walks through one made-to-measure blind, from the page to the cart, in both layouts. The screen is on the left, the clicks on the right. A glossary at the bottom defines the field names.<\/p><\/dd>\n<dt id=\"what%20is%20the%20accordion%20layout%3F\"><h3>What is the accordion layout?<\/h3><\/dt>\n<dd><p>Configurators \u2192 edit the configurator \u2192 Wizard layout. Step by step shows one screen at a time with 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. A folded heading shows a small photo of the selected card next to its name, when that card has one. A choice without a photo, and a numeric step, stay text only. OK opens the next section and scrolls it up under the price bar. The steps menu does the same. Switching layout does not change saved data.<\/p><\/dd>\n<dt id=\"how%20do%20i%20change%20the%20order%20of%20the%20variant%20cards%3F\"><h3>How do I change the order of the variant cards?<\/h3><\/dt>\n<dd><p>Variants &amp; Pricing \u2192 Order on each variant. Cards follow that number. Variants with the same number stay in price order. In a CSV or XML config row the same value is <code>sort_order<\/code> \/ <code>sort<\/code>.<\/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 on the configurator, under First-step label (e.g. Type de confection, Model).<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.7.1<\/h4>\n\n<ul>\n<li>Wizard: the quantity stepper is an inline element. When the page runs wpautop on the rendered wizard, Back and Add to cart keep equal widths instead of Back taking the whole bar.<\/li>\n<\/ul>\n\n<h4>1.7.0<\/h4>\n\n<ul>\n<li>Configurators: a shop runs several, each with its own name, slug, first-step label, layout, WooCommerce product and catalog. New Configurators screen; a bar on every catalog screen switches between them. First-step label and Wizard layout move from Settings to the configurator.<\/li>\n<li>Product attachment: pick any simple product or let the plugin create a hidden one. The wizard renders on the attached product page under the summary; the shop grid button reads Configure.<\/li>\n<li>Quantity: a stepper on the wizard, the total follows it, the cart line carries the quantity; stock and Sold individually are honoured.<\/li>\n<li>Weight: a Weight field on variants and options; the cart line weighs the variant plus the chosen options, so weight-based shipping rates apply. The field is hidden while the product is Virtual.<\/li>\n<li>Block cart and block checkout: the line name carries the variant, the choices list and the card photo come through the Store API.<\/li>\n<li>Block sidebar picks the configurator; shortcode accepts <code>configurator=\"slug\"<\/code>.<\/li>\n<li>CSV \/ XML keep a <code>weight<\/code> column \/ attribute. Import and export work on the configurator shown in the bar. The <code>tlsc_import_payload<\/code> filter receives the configurator ID as second argument.<\/li>\n<li>Database: new <code>tlsc_configurators<\/code> table, <code>configurator_id<\/code> on variants and steps, <code>weight<\/code> on variants and options. Existing catalogs are gathered into one configurator attached to the existing product. Step slugs are unique per configurator.<\/li>\n<li>Uninstall removes only hidden products the plugin created; attached products are detached.<\/li>\n<li>Guide, docs (USER-GUIDE \/ MODE-DEMPLOI) and the readme FAQ cover configurators, quantity and weight.<\/li>\n<\/ul>\n\n<h4>1.6.0<\/h4>\n\n<ul>\n<li>A variant can hide its price: no price on the card, and no total at the top while it is 0. Useful for a variant that only leads to a choice.<\/li>\n<li>A step can hide \u201cIncluded\u201d on options at 0. Options with a price still show it.<\/li>\n<li>CSV and XML import\/export keep both settings (hide_price). An older file without it still imports; nothing is hidden.<\/li>\n<li>Database tables get the new columns on update.<\/li>\n<li>Card grids (variants and step options): the last, incomplete row is centered and its cards keep the width of the full rows. The accordion layout is unchanged.<\/li>\n<\/ul>\n\n<h4>1.5.9<\/h4>\n\n<ul>\n<li>Activation leaves the store currency, the symbol position and the default country as set in WooCommerce. Prices in the wizard, the cart and the order use that format.<\/li>\n<li>The configurable product is created after WooCommerce has registered the product post type.<\/li>\n<li>The plugin header declares the WooCommerce versions it requires and has been tested with, and High-Performance Order Storage.<\/li>\n<li>CSV import passes the escape argument to str_getcsv.<\/li>\n<li>Database tables are updated once per schema version.<\/li>\n<li>Docs (USER-GUIDE \/ MODE-DEMPLOI) and the readme FAQ cover the store currency.<\/li>\n<\/ul>\n\n<h4>1.5.8<\/h4>\n\n<ul>\n<li>Accordion: a folded section shows a small photo of the selected card next to its name, when that card has one. A choice without a photo, and a numeric step, stay text only.<\/li>\n<li>Docs (USER-GUIDE \/ MODE-DEMPLOI) and the readme FAQ cover it.<\/li>\n<\/ul>\n\n<h4>1.5.7<\/h4>\n\n<ul>\n<li>A card step\u2019s slug in a variant formula is the sum of the selected options\u2019 price supplements, or 0 when none is selected. When the formula names that slug, those supplements are not added again. The step overage still is. An empty formula still adds every supplement once.<\/li>\n<li>Accordion: OK opens the next section and scrolls it up under the price bar. The steps menu does the same.<\/li>\n<li>Docs (USER-GUIDE \/ MODE-DEMPLOI) and the readme FAQ cover both.<\/li>\n<\/ul>\n\n<h4>1.5.6<\/h4>\n\n<ul>\n<li>Variants have an Order field. Cards follow that number, then the price when two variants share it.<\/li>\n<li>CSV and XML config rows store that number (<code>sort_order<\/code> \/ <code>sort<\/code>).<\/li>\n<li>Docs (USER-GUIDE \/ MODE-DEMPLOI) and the readme FAQ cover the variant order.<\/li>\n<\/ul>\n\n<h4>1.5.5<\/h4>\n\n<ul>\n<li>Settings: Unavailable options. Hide removes the card. Show as unavailable keeps it greyed out and not selectable. The cart still rejects an unavailable option.<\/li>\n<li>Admin menu Guide: a walkthrough of one made-to-measure blind, in both layouts, with a contents list and a glossary.<\/li>\n<li>Docs (USER-GUIDE \/ MODE-DEMPLOI) and the readme FAQ cover unavailable options and the Guide.<\/li>\n<\/ul>\n\n<h4>1.5.4<\/h4>\n\n<ul>\n<li>Import and reactivation leave an existing shell product name alone. The demo seed name is used only when that product is created.<\/li>\n<li>Docs (USER-GUIDE \/ MODE-DEMPLOI) and the readme FAQ state that.<\/li>\n<\/ul>\n\n<h4>1.5.3<\/h4>\n\n<ul>\n<li>CSV and XML import\/export keep variant and option photos, option extra info, option availability, and whether a variant is visible in the wizard. An older file without those columns still imports; photos stay empty.<\/li>\n<li>Docs (USER-GUIDE \/ MODE-DEMPLOI) and the Import \/ Export screen explain what a round trip keeps, and that a pre-1.5.3 file clears photos.<\/li>\n<li>Steps list: numeric min\/max uses a prefixed view variable (Plugin Check).<\/li>\n<\/ul>\n\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:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/336302","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=336302"}],"author":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/tlloancy"}],"wp:attachment":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=336302"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=336302"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=336302"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=336302"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=336302"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=336302"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}