{"id":74858,"date":"2017-10-09T11:03:46","date_gmt":"2017-10-09T11:03:46","guid":{"rendered":"https:\/\/br.wordpress.org\/plugins\/woocommerce-better-usability\/"},"modified":"2026-10-27T21:55:30","modified_gmt":"2026-10-27T21:55:30","slug":"woo-better-usability","status":"publish","type":"plugin","link":"https:\/\/mai.wordpress.org\/plugins\/woo-better-usability\/","author":14476247,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.1.3","requires":"5.6","requires_php":"7.2","requires_plugins":null,"header_name":"Better Usability for WooCommerce","header_author":"Moises Heberle","header_description":"Improves overall Woocommerce user experience","assets_banners_color":"","last_updated":"2026-10-27 21:55:30","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/woo-better-usability","header_author_uri":"https:\/\/mhtec.org\/contact","rating":4.9,"author_block_rating":0,"active_installs":800,"downloads":65622,"num_ratings":21,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"moiseh","date":"2017-10-21 19:57:13","revision":1750467},"1.0.10":{"tag":"1.0.10","author":"moiseh","date":"2018-03-22 14:35:01","revision":1845113},"1.0.11":{"tag":"1.0.11","author":"moiseh","date":"2018-03-22 14:35:01","revision":1845113},"1.0.12":{"tag":"1.0.12","author":"moiseh","date":"2018-04-28 20:39:47","revision":1865836},"1.0.13":{"tag":"1.0.13","author":"moiseh","date":"2018-04-28 20:39:47","revision":1865836},"1.0.14":{"tag":"1.0.14","author":"moiseh","date":"2018-06-24 19:07:04","revision":1898065},"1.0.15":{"tag":"1.0.15","author":"moiseh","date":"2018-06-24 19:07:04","revision":1898065},"1.0.16":{"tag":"1.0.16","author":"moiseh","date":"2018-09-15 12:26:12","revision":1941779},"1.0.17":{"tag":"1.0.17","author":"moiseh","date":"2018-11-09 18:32:05","revision":1971728},"1.0.18":{"tag":"1.0.18","author":"moiseh","date":"2018-12-02 11:23:48","revision":1983921},"1.0.19":{"tag":"1.0.19","author":"moiseh","date":"2018-12-04 00:48:46","revision":1984777},"1.0.2":{"tag":"1.0.2","author":"moiseh","date":"2017-10-27 16:37:47","revision":1754061},"1.0.20":{"tag":"1.0.20","author":"moiseh","date":"2019-01-20 12:20:24","revision":2015736},"1.0.21":{"tag":"1.0.21","author":"moiseh","date":"2019-02-10 12:23:27","revision":2028056},"1.0.22":{"tag":"1.0.22","author":"moiseh","date":"2019-02-14 00:35:52","revision":2030196},"1.0.23":{"tag":"1.0.23","author":"moiseh","date":"2019-02-14 00:35:52","revision":2030196},"1.0.24":{"tag":"1.0.24","author":"moiseh","date":"2019-03-07 10:38:13","revision":2045860},"1.0.25":{"tag":"1.0.25","author":"moiseh","date":"2019-03-14 18:15:20","revision":2050739},"1.0.26":{"tag":"1.0.26","author":"moiseh","date":"2019-04-16 01:00:50","revision":2069087},"1.0.27":{"tag":"1.0.27","author":"moiseh","date":"2019-06-17 22:54:35","revision":2107691},"1.0.28":{"tag":"1.0.28","author":"moiseh","date":"2019-08-14 19:27:36","revision":2139715},"1.0.29":{"tag":"1.0.29","author":"moiseh","date":"2019-08-22 22:29:23","revision":2144103},"1.0.3":{"tag":"1.0.3","author":"moiseh","date":"2017-11-02 16:13:02","revision":1757492},"1.0.30":{"tag":"1.0.30","author":"moiseh","date":"2019-11-12 23:00:45","revision":2190998},"1.0.31":{"tag":"1.0.31","author":"moiseh","date":"2020-01-03 18:48:10","revision":2221812},"1.0.32":{"tag":"1.0.32","author":"moiseh","date":"2020-01-08 13:46:13","revision":2224296},"1.0.33":{"tag":"1.0.33","author":"moiseh","date":"2020-01-24 23:41:13","revision":2233064},"1.0.34":{"tag":"1.0.34","author":"moiseh","date":"2020-03-21 17:06:15","revision":2265152},"1.0.35":{"tag":"1.0.35","author":"moiseh","date":"2020-04-21 12:10:18","revision":2288308},"1.0.36":{"tag":"1.0.36","author":"moiseh","date":"2020-05-19 20:17:03","revision":2308200},"1.0.37":{"tag":"1.0.37","author":"moiseh","date":"2020-05-25 13:02:58","revision":2311605},"1.0.38":{"tag":"1.0.38","author":"moiseh","date":"2020-05-30 20:12:41","revision":2315133},"1.0.39":{"tag":"1.0.39","author":"moiseh","date":"2020-06-27 18:31:38","revision":2331720},"1.0.4":{"tag":"1.0.4","author":"moiseh","date":"2017-11-10 10:14:44","revision":1762689},"1.0.40":{"tag":"1.0.40","author":"moiseh","date":"2020-08-13 12:52:42","revision":2360109},"1.0.41":{"tag":"1.0.41","author":"moiseh","date":"2020-08-19 21:40:05","revision":2365300},"1.0.42":{"tag":"1.0.42","author":"moiseh","date":"2020-09-08 19:37:12","revision":2377405},"1.0.43":{"tag":"1.0.43","author":"moiseh","date":"2020-09-14 16:23:05","revision":2381181},"1.0.44":{"tag":"1.0.44","author":"moiseh","date":"2020-09-28 21:27:40","revision":2389947},"1.0.45":{"tag":"1.0.45","author":"moiseh","date":"2020-10-09 13:53:12","revision":2396716},"1.0.46":{"tag":"1.0.46","author":"moiseh","date":"2020-10-28 11:29:53","revision":2408237},"1.0.47":{"tag":"1.0.47","author":"moiseh","date":"2021-02-22 22:37:21","revision":2479426},"1.0.48":{"tag":"1.0.48","author":"moiseh","date":"2021-04-15 00:36:18","revision":2515244},"1.0.49":{"tag":"1.0.49","author":"moiseh","date":"2021-07-22 22:49:06","revision":2570416},"1.0.5":{"tag":"1.0.5","author":"moiseh","date":"2017-11-13 12:27:44","revision":1765052},"1.0.50":{"tag":"1.0.50","author":"moiseh","date":"2021-11-05 21:00:04","revision":2625290},"1.0.51":{"tag":"1.0.51","author":"moiseh","date":"2022-02-21 22:58:44","revision":2682685},"1.0.52":{"tag":"1.0.52","author":"moiseh","date":"2022-05-03 23:15:28","revision":2717823},"1.0.54":{"tag":"1.0.54","author":"moiseh","date":"2022-11-09 16:27:49","revision":2815361},"1.0.55":{"tag":"1.0.55","author":"moiseh","date":"2023-01-11 12:39:03","revision":2846769},"1.0.56":{"tag":"1.0.56","author":"moiseh","date":"2026-06-12 13:01:50","revision":3570117},"1.0.57":{"tag":"1.0.57","author":"moiseh","date":"2026-06-17 17:10:45","revision":3576171},"1.0.58":{"tag":"1.0.58","author":"moiseh","date":"2026-06-17 17:48:28","revision":3576212},"1.0.59":{"tag":"1.0.59","author":"moiseh","date":"2026-06-19 01:00:21","revision":3577983},"1.0.6":{"tag":"1.0.6","author":"moiseh","date":"2017-11-19 11:07:46","revision":1770676},"1.0.60":{"tag":"1.0.60","author":"moiseh","date":"2026-06-19 18:22:01","revision":3579086},"1.0.61":{"tag":"1.0.61","author":"moiseh","date":"2026-07-02 11:31:25","revision":3593908},"1.0.62":{"tag":"1.0.62","author":"moiseh","date":"2026-07-06 19:24:03","revision":3598258},"1.0.63":{"tag":"1.0.63","author":"moiseh","date":"2026-10-19 19:52:22","revision":3755452},"1.0.64":{"tag":"1.0.64","author":"moiseh","date":"2026-10-19 19:55:34","revision":3755467},"1.0.65":{"tag":"1.0.65","author":"moiseh","date":"2026-10-20 00:09:00","revision":3755689},"1.0.66":{"tag":"1.0.66","author":"moiseh","date":"2026-10-20 18:10:24","revision":3757256},"1.0.7":{"tag":"1.0.7","author":"moiseh","date":"2017-11-27 10:53:27","revision":1776026},"1.0.8":{"tag":"1.0.8","author":"moiseh","date":"2017-12-08 23:17:52","revision":1783615},"1.0.9":{"tag":"1.0.9","author":"moiseh","date":"2018-02-14 23:39:33","revision":1822400},"1.1.0":{"tag":"1.1.0","author":"moiseh","date":"2026-10-27 21:55:30","revision":3769588}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":1,"4":0,"5":20},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3755689,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3755689,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1","1.0.10","1.0.11","1.0.12","1.0.13","1.0.14","1.0.15","1.0.16","1.0.17","1.0.18","1.0.19","1.0.2","1.0.20","1.0.21","1.0.22","1.0.23","1.0.24","1.0.25","1.0.26","1.0.27","1.0.28","1.0.29","1.0.3","1.0.30","1.0.31","1.0.32","1.0.33","1.0.34","1.0.35","1.0.36","1.0.37","1.0.38","1.0.39","1.0.4","1.0.40","1.0.41","1.0.42","1.0.43","1.0.44","1.0.45","1.0.46","1.0.47","1.0.48","1.0.49","1.0.5","1.0.50","1.0.51","1.0.52","1.0.54","1.0.55","1.0.56","1.0.57","1.0.58","1.0.59","1.0.6","1.0.60","1.0.61","1.0.62","1.0.63","1.0.64","1.0.65","1.0.66","1.0.7","1.0.8","1.0.9","1.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3755689,"resolution":"1","location":"assets","locale":"","width":810,"height":560},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3755689,"resolution":"2","location":"assets","locale":"","width":810,"height":560},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3755689,"resolution":"3","location":"assets","locale":"","width":810,"height":560},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3755689,"resolution":"4","location":"assets","locale":"","width":810,"height":560},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3755689,"resolution":"5","location":"assets","locale":"","width":1280,"height":860},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3755689,"resolution":"6","location":"assets","locale":"","width":1280,"height":860},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3755689,"resolution":"7","location":"assets","locale":"","width":1280,"height":860},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3755689,"resolution":"8","location":"assets","locale":"","width":1280,"height":860}},"screenshots":{"1":"Quantity \u2212\/+ buttons and AJAX \"Add to cart\" on the Shop page","2":"The cart recalculates by AJAX as soon as a quantity changes \u2014 no \"Update cart\" click","3":"The same \u2212\/+ buttons in the WooCommerce Cart block","4":"Change or remove items right on the checkout page","5":"General settings \u2014 AJAX add to cart, quantity limit, where the \u2212\/+ buttons and the quantity select show, checkout quantities","6":"Shop settings \u2014 quantity on the shop page, Go to checkout shortcut","7":"Product page settings \u2014 low-stock badge","8":"Cart settings \u2014 AJAX auto-update, confirmation prompt"}},"plugin_section":[],"plugin_tags":[221,3148,3893,3800,286],"plugin_category":[45],"plugin_contributors":[81920],"plugin_business_model":[],"class_list":["post-74858","plugin","type-plugin","status-publish","hentry","plugin_tags-ajax","plugin_tags-checkout","plugin_tags-usability","plugin_tags-ux","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-moiseh","plugin_committers-moiseh"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/woo-better-usability\/assets\/icon-128x128.png?rev=3755689","icon_2x":"https:\/\/ps.w.org\/woo-better-usability\/assets\/icon-256x256.png?rev=3755689","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/woo-better-usability\/assets\/screenshot-1.png?rev=3755689","caption":"Quantity \u2212\/+ buttons and AJAX \"Add to cart\" on the Shop page"},{"src":"https:\/\/ps.w.org\/woo-better-usability\/assets\/screenshot-2.png?rev=3755689","caption":"The cart recalculates by AJAX as soon as a quantity changes \u2014 no \"Update cart\" click"},{"src":"https:\/\/ps.w.org\/woo-better-usability\/assets\/screenshot-3.png?rev=3755689","caption":"The same \u2212\/+ buttons in the WooCommerce Cart block"},{"src":"https:\/\/ps.w.org\/woo-better-usability\/assets\/screenshot-4.png?rev=3755689","caption":"Change or remove items right on the checkout page"},{"src":"https:\/\/ps.w.org\/woo-better-usability\/assets\/screenshot-5.png?rev=3755689","caption":"General settings \u2014 AJAX add to cart, quantity limit, where the \u2212\/+ buttons and the quantity select show, checkout quantities"},{"src":"https:\/\/ps.w.org\/woo-better-usability\/assets\/screenshot-6.png?rev=3755689","caption":"Shop settings \u2014 quantity on the shop page, Go to checkout shortcut"},{"src":"https:\/\/ps.w.org\/woo-better-usability\/assets\/screenshot-7.png?rev=3755689","caption":"Product page settings \u2014 low-stock badge"},{"src":"https:\/\/ps.w.org\/woo-better-usability\/assets\/screenshot-8.png?rev=3755689","caption":"Cart settings \u2014 AJAX auto-update, confirmation prompt"}],"raw_content":"<!--section=description-->\n<p>Better Usability for WooCommerce removes the small but persistent friction points that cause shoppers to abandon: waiting for full page reloads, hunting for quantity controls, and navigating an unnecessary cart step before checkout. It covers four areas \u2014 Shop, Product, Cart, and Checkout \u2014 with settings you can mix and match to fit your store.<\/p>\n\n<p>[youtube https:\/\/www.youtube.com\/watch?v=cQ3rLm0kPnc]\n<strong>Free features:<\/strong><\/p>\n\n<p><em>Cart<\/em><\/p>\n\n<ul>\n<li>Auto-refresh cart totals via AJAX when quantity changes \u2014 no \"Update cart\" click required<\/li>\n<li>Show a confirmation prompt before quantity is reduced to zero<\/li>\n<li>Hide the \"Update cart\" button<\/li>\n<\/ul>\n\n<p><em>Shop<\/em><\/p>\n\n<ul>\n<li>Change product quantity directly on the shop\/archive page before adding to cart<\/li>\n<li>AJAX \"Add to cart\" on individual product pages (same as the shop-loop behaviour)<\/li>\n<li>Skip the cart page and go straight to checkout after adding a product<\/li>\n<li>Customise the \"Add to cart\" and \"View cart\" button labels<\/li>\n<\/ul>\n\n<p><em>Product<\/em><\/p>\n\n<ul>\n<li>Low-stock urgency badge (\"Only 3 left in stock!\") near the Add to Cart button on both single product and shop\/archive pages \u2014 it reads WooCommerce's own per-product stock quantity and low-stock threshold, shows only for stock-managed products at or below that threshold, and is fully customisable (badge text with a <code>{stock}<\/code> placeholder, optional custom threshold), giving hesitant shoppers a scarcity nudge with zero configuration beyond a toggle<\/li>\n<\/ul>\n\n<p><em>Checkout<\/em><\/p>\n\n<ul>\n<li>Allow shoppers to delete items directly from the checkout page<\/li>\n<li>Allow shoppers to change quantities from the checkout page<\/li>\n<li>Display the unit price next to each product name<\/li>\n<\/ul>\n\n<p><em>General<\/em><\/p>\n\n<ul>\n<li>Show \u2212\/+ buttons around the quantity field \u2014 choose where: Shop, Product page, Cart, Checkout<\/li>\n<li>Show the quantity as a dropdown select instead of a numeric input \u2014 choose where: Shop, Product page, Cart<\/li>\n<li>Lock the numeric input so shoppers can only use the +\/\u2212 buttons (prevents accidental typing)<\/li>\n<li>One \"Updating...\" text for the cart and price refreshes<\/li>\n<li>Convert simple-product \"Add to Cart\" buttons to AJAX site-wide<\/li>\n<li>Hide the \"Added to cart\" notice after adding a product<\/li>\n<li>Hide the \"View cart\" link after adding a product<\/li>\n<li>Set a global maximum quantity per product<\/li>\n<li>Decimal quantity support for +\/\u2212 buttons<\/li>\n<li>Accessible, WCAG-friendly quantity controls \u2014 the \u2212\/+ buttons carry proper \"Decrease quantity\" \/ \"Increase quantity\" labels, work with the keyboard (Enter\/Space), and announce the new quantity (and the cart refresh) to screen readers<\/li>\n<\/ul>\n\n<p><strong>PRO features:<\/strong><\/p>\n\n<ul>\n<li><strong>Sticky Add to Cart bar<\/strong> \u2014 a floating bar slides in when the shopper scrolls past the Add to Cart button, keeping purchase intent alive without hunting for the button<\/li>\n<li><strong>Quick View modal<\/strong> \u2014 shoppers open a full product preview in a lightbox (image, price, description, Add to Cart) without leaving the Shop page; keyboard accessible (focus stays in the lightbox and returns to the button on close)<\/li>\n<li>Synchronize cart quantities automatically when changed (<a href=\"https:\/\/youtu.be\/Xqv8rZ-hoOk\">view demo<\/a>)<\/li>\n<li>Auto-update price on Product and Shop pages as quantity changes (<a href=\"https:\/\/youtu.be\/ZKYJZAUXV_g\">view demo<\/a>)<\/li>\n<li>Change product variations directly on the Shop page \u2014 fewer clicks to buy (<a href=\"https:\/\/youtu.be\/NhJewWjX-I8\">view demo<\/a>)<\/li>\n<li>Sync the MiniCart widget live from Shop or Product pages (<a href=\"https:\/\/youtu.be\/r7XQtkPV7sg\">view demo<\/a>)<\/li>\n<li>AJAX delete on the checkout page \u2014 no full page reload (<a href=\"https:\/\/youtu.be\/KYkqoqfsi3U\">view demo<\/a>)<\/li>\n<li>Change quantities inside the Mini-Cart widget, with \u2212\/+ buttons (<a href=\"https:\/\/youtu.be\/8GDpWQhcfyU\">view demo<\/a>)<\/li>\n<li>Quantity as a dropdown select at checkout<\/li>\n<li>Block the screen while a quantity change is saved<\/li>\n<\/ul>\n\n<p>Get the PRO version <a href=\"https:\/\/gum.co\/wbupro\">here<\/a>.<\/p>\n\n<p>[youtube https:\/\/www.youtube.com\/watch?v=Fh_v-u4w6Cc]<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload <code>woo-better-usability.zip<\/code> to the <code>\/wp-content\/plugins\/<\/code> directory<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress<\/li>\n<li>It's done. Now you can go to the Settings to customize what you want<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20work%20with%20my%20theme%3F\"><h3>Does it work with my theme?<\/h3><\/dt>\n<dd><p>The plugin hooks into standard WooCommerce actions and filters, so it works with the vast majority of themes out of the box. It has been specifically tested and patched for popular themes including Astra, Divi, Flatsome, Porto, Saasland, Enfold, and Greenmart. If you run into a visual glitch, try changing where the \u2212\/+ buttons show (\"Show -\/+ buttons around the quantity on\", General tab), or open a support thread with your theme name.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20elementor%20%28and%20other%20page%20builders%29%3F\"><h3>Does it work with Elementor (and other page builders)?<\/h3><\/dt>\n<dd><p>Yes. Compatibility patches for Elementor (including its WooCommerce widgets and minicart) are built in and have been maintained across many releases. Divi and similar builders are also supported.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20new%20woocommerce%20cart%20and%20checkout%20blocks%3F\"><h3>Does it work with the new WooCommerce Cart and Checkout Blocks?<\/h3><\/dt>\n<dd><p>Partly. The <strong>global maximum quantity per product<\/strong> and the <strong>sold-individually \/ lock quantity input<\/strong> limits are now enforced inside the Block Cart and Block Checkout too \u2014 the block quantity steppers read these limits from the WooCommerce Store API, so they are respected regardless of whether you use the classic or Block Cart\/Checkout. The <strong>confirm before removing an item<\/strong> prompt (also fired when the minus stepper would drop quantity to zero) works inside the Block Cart as well. The remaining Cart\/Checkout tweaks (AJAX quantity change, delete from checkout, and similar) still target the <strong>classic<\/strong> (shortcode-based) Cart and Checkout templates and do not apply inside the Blocks \u2014 when your Cart\/Checkout pages use the Blocks, the settings page hides them. The shop and product page features work regardless.<\/p><\/dd>\n<dt id=\"is%20it%20compatible%20with%20woocommerce%20high-performance%20order%20storage%20%28hpos%29%3F\"><h3>Is it compatible with WooCommerce High-Performance Order Storage (HPOS)?<\/h3><\/dt>\n<dd><p>Yes. HPOS compatibility has been declared since version 1.0.55.<\/p><\/dd>\n<dt id=\"what%20is%20the%20difference%20between%20the%20free%20and%20pro%20versions%3F\"><h3>What is the difference between the free and PRO versions?<\/h3><\/dt>\n<dd><p>The free version covers the core UX improvements: AJAX cart updates, +\/\u2212 quantity buttons, Go-to-Checkout shortcut, and shop\/product\/checkout tweaks. The PRO version adds real-time cart synchronisation (quantities and prices update live), inline variation selection on the shop page, and minicart quantity controls \u2014 features that directly increase conversion on higher-traffic stores. See the <a href=\"https:\/\/gum.co\/wbupro\">PRO page<\/a> for a full comparison.<\/p><\/dd>\n<dt id=\"the%20ajax%20cart%20update%20is%20not%20working.%20what%20should%20i%20check%3F\"><h3>The AJAX cart update is not working. What should I check?<\/h3><\/dt>\n<dd><ol>\n<li>Make sure \"Update cart\/prices automatically when change quantity\" is on (<strong>WooCommerce \u2192 Better Usability \u2192 Cart<\/strong>) and your Cart page uses the classic <code>[woocommerce_cart]<\/code> shortcode \u2014 the Cart block updates its totals on its own.<\/li>\n<li>Open your browser's developer console (F12) and check for JavaScript errors \u2014 a conflicting plugin or theme script is the most common cause.<\/li>\n<li>Make sure no caching plugin is serving a stale version of the page. Purge all caches after changing settings.<\/li>\n<\/ol><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Changed: a cleaner Get PRO tab \u2014 the PRO features one per row with a check, a red YouTube \"Watch demo\" button for each feature video, and the buy button at the top and the bottom<\/li>\n<li>Fixed: the Get PRO tab listed no feature (the readme's \"<strong>PRO features:<\/strong>\" heading was not read)<\/li>\n<li>Fixed: a settings tab whose name has a space opened empty<\/li>\n<li>Changed: fewer, simpler settings. The per-page settings are merged into one each, on the General tab: \"Show -\/+ buttons around the quantity on\" (Shop, Product page, Cart, Checkout \u2014 replaces \"Display quantity buttons everywhere\" and the four \"Show -\/+ buttons around item quantity\"), \"Show the quantity as a select (drop-down) on\" (Shop, Product page, Cart \u2014 replaces the three \"Show quantity as select instead of numeric field\"), \"Lock the quantity input\" (was on the Cart tab), and \"Text shown while the cart or a price is updating\" (replaces \"Text to display in Update cart button while loading\")<\/li>\n<li>Removed settings, now fixed: \"AJAX timeout in milliseconds\" (always 800 ms), \"Technical method to update cart prices\" (always the plugin's own AJAX) and \"Where to display the <code>Updating<\/code> text\" (always the Proceed to checkout button)<\/li>\n<li>Removed features: \"Override the default number of products per row\", \"Hide product pagination\", \"Hide <code>Default sorting<\/code> select box\", \"Hide <code>Add to cart<\/code> button\" (shop), \"Hide price range for variable products\", \"Hide price range for grouped products\", \"Hide quantity input on product page\", \"Hide quantity input on cart page\" and the free-shipping progress bar (\"Show a free-shipping progress bar\") \u2014 a free-shipping bar is in Ajax Cart for WooCommerce PRO<\/li>\n<li>Changed: when your Cart\/Checkout pages use the WooCommerce blocks, the settings that only work on the classic Cart\/Checkout are hidden (their saved values are kept), with a note saying so<\/li>\n<li>Your saved settings are migrated on update: each merged setting gets every page where the old one was on, the removed settings are dropped; a settings file exported from an older version imports the same way (Tools tab)<\/li>\n<li>Changed: a cleaner settings page \u2014 the settings in a card, one row each with the label and its field aligned, on\/off settings as switches, multiple choices as chips, a setting's sub-options in a panel under it, and Reset set apart from Save<\/li>\n<\/ul>\n\n<h4>1.0.66<\/h4>\n\n<ul>\n<li>Changed: the settings page's script variable, nonces and notice links now carry the plugin's own prefix; \"Tested up to\" is declared only in readme.txt<\/li>\n<li>Hardened: every piece of HTML the plugin prints (quantity fields, -\/+ buttons, add-to-cart links) goes through WordPress's escaping, and no PHP file can be opened directly<\/li>\n<li>Changed: scripts and styles carry the plugin version, so browsers fetch the new ones after an update<\/li>\n<\/ul>\n\n<h4>1.0.65<\/h4>\n\n<ul>\n<li>Fixed: with another of our plugins on the same site, the two no longer share \u2014 and override \u2014 each other's settings, notices and update code<\/li>\n<\/ul>\n\n<h4>1.0.64<\/h4>\n\n<ul>\n<li>Tested with WordPress 7.1 and WooCommerce 11.2 (on PHP 8.4): no changes needed<\/li>\n<\/ul>\n\n<h4>1.0.63<\/h4>\n\n<ul>\n<li>Added an optional low-stock urgency badge (\"Only {stock} left in stock!\") near the Add to Cart button on both the single product page (<code>woocommerce_single_product_summary<\/code>) and the shop\/archive loop (<code>woocommerce_after_shop_loop_item<\/code>). It renders only for stock-managed products whose remaining quantity is at or below the threshold \u2014 the configured value when set, otherwise WooCommerce's own <code>woocommerce_notify_low_stock_amount<\/code> (overridable via the <code>wbu_low_stock_threshold<\/code> filter) \u2014 swaps <code>{stock}<\/code> for the remaining quantity, and is output as a <code>role=\"status\"<\/code> region so screen readers announce it. Enable it and customise the text\/threshold under the Product tab<\/li>\n<li>Added a free-shipping progress bar to the classic Cart and the Mini-Cart \u2014 a live \"Add $X more to get FREE shipping!\" message with a progress bar that reads your store's own free-shipping threshold (the min_amount of the Free shipping method on the matching shipping zone, coupon-only rules excluded, overridable via the <code>wbu_free_shipping_threshold<\/code> filter), swaps <code>{remaining}<\/code> for the amount still needed, and shows an \"unlocked\" message at 100%; it refreshes automatically as quantities change on the cart and rides WooCommerce's fragment refresh in the Mini-Cart. Enable it and customise both messages under the Cart tab<\/li>\n<li>The \u2212\/+ quantity buttons are now accessible everywhere they appear (shop, product, cart, checkout, mini-cart and the PRO Quick View modal): each button exposes a real \"Decrease quantity\" \/ \"Increase quantity\" label to screen readers instead of a bare \"-\" \/ \"+\" glyph, and can be operated with the keyboard using Enter or Space<\/li>\n<li>The new quantity is now announced to screen readers after each \u2212\/+ click (e.g. \"Quantity: 3\"), and \"Cart total updated\" is announced once the AJAX cart\/checkout refresh finishes, through a single visually-hidden aria-live region<\/li>\n<li>Made the free-shipping progress bar accessible: the track is now a real <code>role=\"progressbar\"<\/code> control (with aria-valuemin\/valuemax\/valuenow and a plaintext aria-label), and its state is announced to screen readers through the shared aria-live region whenever it changes on a cart refresh (classic Cart or Mini-Cart) \u2014 so shoppers hear \"Add $X more to get FREE shipping!\" and the \"You've unlocked free shipping!\" unlock is spoken exactly once<\/li>\n<li>When \"lock the quantity input\" is enabled, the input is now marked as read-only for assistive tech (aria-readonly) while staying focusable, so the current quantity can still be read out<\/li>\n<\/ul>\n\n<h4>1.0.62<\/h4>\n\n<ul>\n<li>The Block Cart and Block Checkout quantity steppers now increment\/decrement by each product's own configured step (e.g. 0.5 kg for weight-based products or multiples of 6 for \"sold in packs\" products), matching the classic Cart and preventing invalid quantities that trigger Store API validation errors at checkout<\/li>\n<li>The \"show a confirmation prompt before an item's quantity is reduced to zero\" safety feature now also works inside the WooCommerce Block Cart \u2014 a stray click on the remove link (or the minus stepper at quantity 1) asks \"are you sure?\" before the item is removed, matching the classic Cart behaviour<\/li>\n<li>The \"Go to checkout directly instead of cart\" shortcut now also works on block-based shops (Product Collection \/ All Products) \u2014 adding a product from a shop, product or product-grid block sends the shopper straight to checkout, matching the classic behaviour that only fired on the old add-to-cart request<\/li>\n<\/ul>\n\n<h4>1.0.61<\/h4>\n\n<ul>\n<li>The global maximum-quantity-per-product limit and the sold-individually \/ \"lock quantity input\" rule are now enforced inside the WooCommerce Block Cart and Block Checkout (their quantity steppers read the limits from the Store API); the remaining classic-only tweaks still target the shortcode-based Cart\/Checkout pages<\/li>\n<\/ul>\n\n<h4>1.0.60<\/h4>\n\n<ul>\n<li>Fixed the \"Better Usability for WooCommerce may not be compatible with the Checkout block\" admin notice \u2014 the plugin now declares compatibility with the Cart\/Checkout Blocks (its features no-op inside the Blocks rather than breaking them)<\/li>\n<\/ul>\n\n<h4>1.0.59<\/h4>\n\n<ul>\n<li>PRO: Added Sticky Add to Cart bar \u2014 floats in when the shopper scrolls past the Add to Cart button on product pages; position, background colour, and text colour are all configurable<\/li>\n<li>PRO: Added Quick View modal \u2014 opens a product preview lightbox from the Shop page without a page navigation<\/li>\n<\/ul>\n\n<h4>1.0.58<\/h4>\n\n<ul>\n<li>Fixed quantity selector always sending 1 when using the [add_to_cart] shortcode \u2014 add-to-cart button is a sibling of the qty form, not a child, so data-quantity was never updated<\/li>\n<li>Fixed compat scripts reporting missing dependencies by moving enqueue hook to a later priority so third-party scripts are registered first<\/li>\n<li>Fixed checkout slowdown caused by Ajax Search compat script binding an expensive DOMSubtreeModified listener \u2014 replaced with MutationObserver and excluded the script from checkout pages<\/li>\n<\/ul>\n\n<h4>1.0.57<\/h4>\n\n<ul>\n<li>Declared the GPLv2 license in the plugin header<\/li>\n<li>Fixed the Author URI<\/li>\n<li>Hardened the AJAX cart and checkout handlers with nonce verification and input sanitization<\/li>\n<li>Escaped all dynamic output and corrected the text domain on every translatable string<\/li>\n<\/ul>\n\n<h4>1.0.56<\/h4>\n\n<ul>\n<li>Tested with WordPress 7.0 and WooCommerce 10.8<\/li>\n<li>Declared Cart &amp; Checkout Blocks compatibility status (features target the classic Cart\/Checkout)<\/li>\n<li>Added <code>Requires PHP<\/code> and <code>Requires Plugins<\/code> headers<\/li>\n<li>Fixed a fatal error on the frontend when checking for the WooCommerce Min\/Max Quantities plugin<\/li>\n<li>Added missing <code>exit<\/code> after dismissing an admin notice redirect<\/li>\n<\/ul>\n\n<h4>1.0.55<\/h4>\n\n<ul>\n<li>Added <code>High-Performance order storage<\/code> compatibility<\/li>\n<\/ul>\n\n<h4>1.0.54<\/h4>\n\n<ul>\n<li>Tested with WooCommerce 7.0.1 and WordPress 6.1<\/li>\n<\/ul>\n\n<h4>1.0.53<\/h4>\n\n<ul>\n<li>Changed the shop quantity area and Add to cart button to be more template-standard<\/li>\n<\/ul>\n\n<h4>1.0.52<\/h4>\n\n<ul>\n<li>Fixed buttons and shop quantity issues for Flatsome theme<\/li>\n<\/ul>\n\n<h4>1.0.51<\/h4>\n\n<ul>\n<li>Adding better quantity buttons compatibility with ShopEngine + Elementor<\/li>\n<li>Tested with WordPress 5.9 and WooCommerce 6.2.0<\/li>\n<\/ul>\n\n<h4>1.0.50<\/h4>\n\n<ul>\n<li>Reducing the templating overrides to make the AJAX add to cart features<\/li>\n<li>Increasing compatibility with WooCommerce and plugins<\/li>\n<li>Changed default plus and minus buttons looking<\/li>\n<li>Tested with WC 5.8.1<\/li>\n<\/ul>\n\n<h4>1.0.49<\/h4>\n\n<ul>\n<li>Added a span with named class product_name to product title at checkout page<\/li>\n<li>Fixed block and unblock effect functions to avoid edge cases errors<\/li>\n<li>Tested with WC 5.5.1 and WP 5.8<\/li>\n<\/ul>\n\n<h4>1.0.48<\/h4>\n\n<ul>\n<li>Fixed WooCommerce 5.2 checkout quantity and remove button incompatibilities<\/li>\n<li>Adding <code>wbu_ajax_add_to_cart_legacy<\/code> filter to use AJAX Add to cart buttons in more compatible way<\/li>\n<\/ul>\n\n<h4>1.0.47<\/h4>\n\n<ul>\n<li>Added single_add_to_cart_button class for Add cart buttons in Shop<\/li>\n<li>Added BlockUI loading effect on Checkout table when changing quantity<\/li>\n<li>Allow to reduce quantity with minus button when preloaded exceeding the max limit<\/li>\n<li>Improved quantity buttons support<\/li>\n<li>Updated Tested up to tag<\/li>\n<\/ul>\n\n<h4>1.0.46<\/h4>\n\n<ul>\n<li>When product is sold individually, disable quantity buttons in single product page<\/li>\n<li>Fixed some WooCommerce frontend event listeners<\/li>\n<\/ul>\n\n<h4>1.0.45<\/h4>\n\n<ul>\n<li>Using document instead document.body listeners that was causing issues with some themes<\/li>\n<li>Fix incorrect translation domain for specific config<\/li>\n<li>Compatibility with Saasland theme buttons<\/li>\n<li>Define more global quantity event listener for different cart theme layouts<\/li>\n<li>Fixed missing hook call to display -\/+ buttons in single product page when using selects<\/li>\n<li>Added option: Display quantity buttons everywhere, simplified buttons display config<\/li>\n<\/ul>\n\n<h4>1.0.44<\/h4>\n\n<ul>\n<li>Cleaning unused source code<\/li>\n<li>Changed plus and minus buttons display to be more standard (using woo *_quantity_input_field hooks)<\/li>\n<li>Removing <code>Fix layout break when Enter key is pressed<\/code> config to use <code>wbu_fix_cart_enter_key<\/code> filter instead<\/li>\n<\/ul>\n\n<h4>1.0.43<\/h4>\n\n<ul>\n<li>Fixing bug in lib that was displaying unwanted admin notices<\/li>\n<li>Updated WooCommerce tested tag<\/li>\n<\/ul>\n\n<h4>1.0.42<\/h4>\n\n<ul>\n<li>Fixed text domain to allow plugin string translation<\/li>\n<li>Reduced and removed unnecessary frontend variables to reduce page size load<\/li>\n<li>Removing minified asset wbulite.min.js for better coding standards and debug<\/li>\n<\/ul>\n\n<h4>1.0.41<\/h4>\n\n<ul>\n<li>Fixed flatsome duplicating add to cart section issue in shop page<\/li>\n<li>Updated WooCommerce and WordPress tested tag<\/li>\n<\/ul>\n\n<h4>1.0.40<\/h4>\n\n<ul>\n<li>Removing deprecated PHP short_open_tag blocks<\/li>\n<li>Supporting for decimal quantity increment and decrement buttons<\/li>\n<\/ul>\n\n<h4>1.0.39<\/h4>\n\n<ul>\n<li>Optimized Hide View cart link after add product config to not blink after add<\/li>\n<li>Added per product limit compatibility with BeRocket Min and Max Quantity for WooCommerce plugin<\/li>\n<\/ul>\n\n<h4>1.0.38<\/h4>\n\n<ul>\n<li>Reversed changelog ordering to make it more standard<\/li>\n<li>Changed plugin notices to respect the guidelines<\/li>\n<li>Standardization of custom plugin templates overriding in theme<\/li>\n<li>Added filter wbu_bypass_shop_quantity_override to avoid templae override quantity html area in Shop<\/li>\n<li>Fixed View cart link after add product option to work with Greenmart theme<\/li>\n<\/ul>\n\n<h4>1.0.37<\/h4>\n\n<ul>\n<li>Added custom theme template overriding similar to WooCommerce<\/li>\n<li>Removed listener for minus and plus buttons because it causing trouble with many themes<\/li>\n<\/ul>\n\n<h4>1.0.36<\/h4>\n\n<ul>\n<li>Fixed Divi theme child compatibility in increase\/decrease buttons<\/li>\n<li>Fixed Porto theme issues with duplicated quantity buttons<\/li>\n<li>Prevent page reload in specific cases after change quantity in shop<\/li>\n<li>Added listener for minus and plus buttons used in most themes<\/li>\n<li>Compatibility with BeRocket Ajax Products Filter plugin<\/li>\n<li>Avoid double quantity increment when using Astra theme<\/li>\n<li>Refresh minicart totals when change quantity in checkout<\/li>\n<\/ul>\n\n<h4>1.0.35<\/h4>\n\n<ul>\n<li>Fixed divi theme child quantity on shop display<\/li>\n<li>Added wp 5.4 tested up to tag<\/li>\n<li>The option to transform Add to Cart into AJAX in Product is now generic for all pages<\/li>\n<\/ul>\n\n<h4>1.0.34<\/h4>\n\n<ul>\n<li>Added compatibility support with WooCommerce 4.0.1<\/li>\n<\/ul>\n\n<h4>1.0.33<\/h4>\n\n<ul>\n<li>Respect max stock quantities when using select input for quantities<\/li>\n<li>Fixed bug that not displaying select input in Cart in some conditions<\/li>\n<\/ul>\n\n<h4>1.0.32<\/h4>\n\n<ul>\n<li>Fixed checkout max input quantity validation<\/li>\n<\/ul>\n\n<h4>1.0.31<\/h4>\n\n<ul>\n<li>Added compatibility support with WooCommerce 3.8.1<\/li>\n<li>Fixed Undefined Index error in Shop page<\/li>\n<\/ul>\n\n<h4>1.0.30<\/h4>\n\n<ul>\n<li>Added support for modified remove link zero quantity check<\/li>\n<li>Added support for Woo Gutenberg Products Block plugin<\/li>\n<\/ul>\n\n<h4>1.0.29<\/h4>\n\n<ul>\n<li>Updated <code>WC tested up to<\/code> tag<\/li>\n<\/ul>\n\n<h4>1.0.28<\/h4>\n\n<ul>\n<li>Removing -\/+ buttons when product is sold individually<\/li>\n<\/ul>\n\n<h4>1.0.27<\/h4>\n\n<ul>\n<li>Fixed blockUI to hide when finish Custom AJAX callback<\/li>\n<li>Added AJAX timeout for quantity change refresh<\/li>\n<li>Updated <code>WC tested up to<\/code> tag<\/li>\n<\/ul>\n\n<h4>1.0.26<\/h4>\n\n<ul>\n<li>Changed the cart overlay behavior in Custom AJAX mode to use the default of WooCommerce<\/li>\n<\/ul>\n\n<h4>1.0.25<\/h4>\n\n<ul>\n<li>Fix and optimize some mess in JS code and removing loops<\/li>\n<li>Fix issue in Related products not showing quantity input for first product<\/li>\n<\/ul>\n\n<h4>1.0.24<\/h4>\n\n<ul>\n<li>Enqueue assets in all pages for better compatibility with custom pages<\/li>\n<li>Reduced <code>is shop loop<\/code> detection checks to better compatibility with Elementor and relateds<\/li>\n<li>Added overlay when AJAX refreshing cart using <code>Run Custom AJAX<\/code> method<\/li>\n<li>Removed option <code>Don't apply this option to front page<\/code> (use <code>wbu_enable_quantity_input<\/code> filter instead)<\/li>\n<li>Removed option <code>Always enqueue assets for better compatibility<\/code><\/li>\n<li>Removed option <code>Optimize to make Cart work better when embebed in other pages<\/code><\/li>\n<\/ul>","raw_excerpt":"Improve WooCommerce UX with AJAX cart updates, quantity buttons, streamlined checkout, and more \u2014 for a faster, smoother buying experience.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/74858","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=74858"}],"author":[{"embeddable":true,"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/moiseh"}],"wp:attachment":[{"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=74858"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=74858"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=74858"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=74858"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=74858"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=74858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}