{"id":344953,"date":"2026-07-28T11:12:48","date_gmt":"2026-07-28T11:12:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/hdwebmobile-mix-match-bundles\/"},"modified":"2026-07-28T11:12:24","modified_gmt":"2026-07-28T11:12:24","slug":"hdwebmobile-mix-match-bundles","status":"publish","type":"plugin","link":"https:\/\/haz.wordpress.org\/plugins\/hdwebmobile-mix-match-bundles\/","author":9757813,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.0.2","requires":"6.9","requires_php":"7.4","requires_plugins":null,"header_name":"HDWebmobile Mix & Match Bundles","header_author":"htrxuan - Han Tran","header_description":"Let customers build their own box: pick a fixed number of items from a category or curated list on a single WooCommerce product.","assets_banners_color":"0f5847","last_updated":"2026-07-28 11:12:24","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/paypal.me\/htrxuan\/20","header_plugin_uri":"https:\/\/hdwebmobile.com\/plugins\/hdwebmobile-mix-match-bundles\/","header_author_uri":"https:\/\/hdwebmobile.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":77,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"htrxuan","date":"2026-07-24 03:07:00"},"1.0.1":{"tag":"1.0.1","author":"htrxuan","date":"2026-07-28 11:12:24"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3620697,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3620697,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3620697,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3620697,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3623040,"resolution":"1","location":"assets","locale":"","width":2560,"height":1267},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3623040,"resolution":"2","location":"assets","locale":"","width":2560,"height":1267},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3623040,"resolution":"3","location":"assets","locale":"","width":2560,"height":1267}},"screenshots":{"1":"The Mix &amp; Match tab on a simple product: enable the bundle, set pick quantity, pricing mode, and component source.","2":"The frontend bundle picker: steppers per component, a live \"Selected: X \/ Y\" counter, and running total.","3":"The Cart page showing the exact bundle breakdown attached to the line item."}},"plugin_section":[],"plugin_tags":[271107,31088,263827,73297,286],"plugin_category":[45],"plugin_contributors":[254181],"plugin_business_model":[],"class_list":["post-344953","plugin","type-plugin","status-publish","hentry","plugin_tags-build-a-box","plugin_tags-bundles","plugin_tags-mix-and-match","plugin_tags-product-bundle","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-htrxuan","plugin_committers-htrxuan"],"banners":{"banner":"https:\/\/ps.w.org\/hdwebmobile-mix-match-bundles\/assets\/banner-772x250.png?rev=3620697","banner_2x":"https:\/\/ps.w.org\/hdwebmobile-mix-match-bundles\/assets\/banner-1544x500.png?rev=3620697","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/hdwebmobile-mix-match-bundles\/assets\/icon-128x128.png?rev=3620697","icon_2x":"https:\/\/ps.w.org\/hdwebmobile-mix-match-bundles\/assets\/icon-256x256.png?rev=3620697","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/hdwebmobile-mix-match-bundles\/assets\/screenshot-1.png?rev=3623040","caption":"The Mix &amp; Match tab on a simple product: enable the bundle, set pick quantity, pricing mode, and component source."},{"src":"https:\/\/ps.w.org\/hdwebmobile-mix-match-bundles\/assets\/screenshot-2.png?rev=3623040","caption":"The frontend bundle picker: steppers per component, a live \"Selected: X \/ Y\" counter, and running total."},{"src":"https:\/\/ps.w.org\/hdwebmobile-mix-match-bundles\/assets\/screenshot-3.png?rev=3623040","caption":"The Cart page showing the exact bundle breakdown attached to the line item."}],"raw_content":"<!--section=description-->\n<p>HDWebmobile Mix &amp; Match Bundles turns any WooCommerce simple product into a \"build a box\" bundle picker. Instead of a plain Add to Cart button, shoppers see a grid of eligible components and choose exactly the number of items you configure before they can add the bundle to their cart.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li>Enable Mix &amp; Match on any simple product with one checkbox<\/li>\n<li>Draw eligible components from a product category or a manual list<\/li>\n<li>Customers pick an exact quantity before Add to Cart activates<\/li>\n<li>Fixed bundle price or percentage-off-components pricing<\/li>\n<li>Bundle contents shown in cart, checkout, order admin, and order emails \u2014 including the WooCommerce Cart and Checkout blocks<\/li>\n<li>HPOS (custom order tables) compatible<\/li>\n<\/ul>\n\n<h4>Limitations (please read before installing)<\/h4>\n\n<ul>\n<li>Works with simple products only \u2014 variable\/other product types are not supported in this version<\/li>\n<li>Component stock is validated at add-to-cart time but is not automatically deducted from component inventory \u2014 track component-level stock manually if that precision matters to you<\/li>\n<li>Selection is exactly-N only; there is no min\/max range picking in this version<\/li>\n<\/ul>\n\n<h3>How to Use<\/h3>\n\n<h4>1. Turn any simple product into a bundle<\/h4>\n\n<p>Edit a <strong>simple product<\/strong>, open its <strong>Mix &amp; Match<\/strong> tab in the Product data box (Screenshot 1), and tick <strong>Enable Mix &amp; Match<\/strong>.<\/p>\n\n<h4>2. Set how many items customers must pick<\/h4>\n\n<p><strong>Pick quantity<\/strong> is the exact number of components a customer must choose before they can add the bundle to their cart \u2014 there's no min\/max range, it's always exactly this number.<\/p>\n\n<h4>3. Choose how the bundle is priced<\/h4>\n\n<ul>\n<li><strong>Fixed bundle price<\/strong> \u2014 the customer always pays the same total (set in <strong>Bundle price<\/strong>) no matter which eligible components they pick.<\/li>\n<li><strong>Percentage off component total<\/strong> \u2014 the price is calculated from the real prices of whatever components they picked, minus your discount percentage.<\/li>\n<\/ul>\n\n<h4>4. Choose where eligible components come from<\/h4>\n\n<p><strong>Component source<\/strong> is either:\n* <strong>Product category<\/strong> \u2014 any published, purchasable product in the category you pick is automatically eligible (add new products to that category later and they're automatically includable, no bundle edit needed).\n* <strong>Manual product list<\/strong> \u2014 hand-pick the exact eligible products yourself.<\/p>\n\n<h4>5. What customers see and do<\/h4>\n\n<p>On the product page, eligible components appear as a grid of cards, each with a <strong>\u2212\/+<\/strong> stepper (Screenshot 2). A running <strong>Selected: X \/ Y<\/strong> counter and the bundle's live total update as they click, and <strong>Add to cart<\/strong> only enables once they've picked exactly the required quantity.<\/p>\n\n<h4>6. Where the bundle contents show up afterward<\/h4>\n\n<p>Once added, the exact picked breakdown (e.g. \"2 x Beanie, 2 x Hoodie, 1 x T-Shirt\") is attached to that cart line item and follows it everywhere \u2014 the Cart page (Screenshot 3), Checkout (including the WooCommerce Checkout <strong>block<\/strong>, not just the classic shortcode checkout), the resulting order in WooCommerce &gt; Orders, and the customer's order confirmation\/order-details emails. You never have to guess what a customer picked after the fact.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/hdwebmobile-mix-match-bundles<\/code> directory, or install the plugin through the WordPress plugins screen directly.<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress. WooCommerce must already be installed and active.<\/li>\n<li>Edit a simple product, open the \"Mix &amp; Match\" tab, enable the bundle, and configure the pick quantity, pricing, and component source.<\/li>\n<\/ol>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Housekeeping release: added Donate link, expanded readme documentation, and real screenshots. No functional code changes.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: bundle enable\/config panel, category\/manual component sourcing, exact-N picker UI, fixed\/discount pricing, cart\/checkout\/order display (classic templates and WooCommerce Blocks), HPOS compatibility declared.<\/li>\n<\/ul>","raw_excerpt":"Let customers build their own box: pick a fixed number of items from a category or curated list on a single WooCommerce product.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/344953","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=344953"}],"author":[{"embeddable":true,"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/htrxuan"}],"wp:attachment":[{"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=344953"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=344953"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=344953"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=344953"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=344953"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=344953"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}