{"id":396049,"date":"2026-11-09T14:29:32","date_gmt":"2026-11-09T14:29:32","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/aovup-quick-order-form-for-woocommerce\/"},"modified":"2026-11-09T14:29:06","modified_gmt":"2026-11-09T14:29:06","slug":"aovup-quick-order-form-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/aovup-quick-order-form-for-woocommerce\/","author":15027382,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.1.4","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"AovUp Quick Order Form for WooCommerce","header_author":"AovUp","header_description":"A fast order form for B2B and repeat buyers: find products by name or SKU, paste a list of SKUs and quantities, add everything to the cart at once, and order again from past orders.","assets_banners_color":"67998a","last_updated":"2026-11-09 14:29:06","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/aovup.com\/plugins\/quick-order-form\/","header_author_uri":"https:\/\/aovup.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":35,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"themealien","date":"2026-11-09 14:29:06","revision":3792639}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3792639,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3792639,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3792639,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3792639,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"aovup\/quick-order-form":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aovup\/quick-order-form","title":"Quick order form","category":"woocommerce","icon":"list-view","description":"Let customers find products by name or SKU, paste a list, and add everything to the cart at once.","keywords":["order","sku","b2b","wholesale","bulk"],"textdomain":"aovup-quick-order-form-for-woocommerce","attributes":{"showPaste":{"type":"boolean","default":true}},"supports":{"html":false,"align":["wide","full"]},"editorScript":"file:.\/editor.js"}},"tagged_versions":["1.0.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3792639,"resolution":"1","location":"assets","locale":"","width":1040,"height":575},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3792639,"resolution":"2","location":"assets","locale":"","width":1040,"height":1641},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3792639,"resolution":"3","location":"assets","locale":"","width":1052,"height":463}},"screenshots":{"1":"The quick order form with search results.","2":"The order list, ready to add to the cart.","3":"\"Order again\" in My Account &gt; Orders."}},"plugin_section":[],"plugin_tags":[10553,65979,359,48771,51032],"plugin_category":[],"plugin_contributors":[130913],"plugin_business_model":[],"class_list":["post-396049","plugin","type-plugin","status-publish","hentry","plugin_tags-b2b","plugin_tags-bulk-order","plugin_tags-order-form","plugin_tags-quick-order","plugin_tags-wholesale","plugin_contributors-themealien","plugin_committers-themealien"],"banners":{"banner":"https:\/\/ps.w.org\/aovup-quick-order-form-for-woocommerce\/assets\/banner-772x250.png?rev=3792639","banner_2x":"https:\/\/ps.w.org\/aovup-quick-order-form-for-woocommerce\/assets\/banner-1544x500.png?rev=3792639","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/aovup-quick-order-form-for-woocommerce\/assets\/icon-128x128.png?rev=3792639","icon_2x":"https:\/\/ps.w.org\/aovup-quick-order-form-for-woocommerce\/assets\/icon-256x256.png?rev=3792639","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/aovup-quick-order-form-for-woocommerce\/assets\/screenshot-1.png?rev=3792639","caption":"The quick order form with search results."},{"src":"https:\/\/ps.w.org\/aovup-quick-order-form-for-woocommerce\/assets\/screenshot-2.png?rev=3792639","caption":"The order list, ready to add to the cart."},{"src":"https:\/\/ps.w.org\/aovup-quick-order-form-for-woocommerce\/assets\/screenshot-3.png?rev=3792639","caption":"\"Order again\" in My Account &gt; Orders."}],"raw_content":"<!--section=description-->\n<p>Trade customers know what they want. Instead of opening ten product pages, they type a code, set a quantity and move on. This plugin gives them one page for that:<\/p>\n\n<ul>\n<li><strong>Search by name or SKU.<\/strong> Type part of a name or code; the matches show with SKU and price. Press Enter to add the first match, or pick one with the arrow keys. Variations are listed on their own (\"Desk \u2013 160 cm\").<\/li>\n<li><strong>Paste a list.<\/strong> Copy SKUs and quantities from a spreadsheet or an email (\"ABC-123, 10\" per line) into the paste box. Unknown codes are listed so nothing gets lost.<\/li>\n<li><strong>Add all to cart at once.<\/strong> Each line goes into the cart the same way the product page adds it, so stock limits, minimum and maximum quantities, and the customer's own price (wholesale prices included) apply. Lines that can't be added stay in the list with the reason.<\/li>\n<li><strong>Order again.<\/strong> An \"Order again\" button next to each past order in My Account, and you choose which order statuses count (WooCommerce alone allows completed orders only).<\/li>\n<li><strong>Anywhere you want it<\/strong>: the \"Quick order form\" block or the <code>[aovup_quick_order]<\/code> shortcode, or let the plugin create a Quick order page for you.<\/li>\n<li>Works with classic and block themes, the Mini-Cart block and classic mini carts. Keyboard and screen-reader friendly.<\/li>\n<li>Choose who can use it (everyone or signed-in customers) and which columns show.<\/li>\n<\/ul>\n\n<h4>Pro<\/h4>\n\n<p><a href=\"https:\/\/aovup.com\/plugins\/quick-order-form\/\">AovUp Quick Order Form Pro<\/a> adds CSV upload, saved lists for each buyer (\"Add to list\" on product pages, \"Save cart as list\", a Saved lists tab in My Account), picking items and quantities from a past order to order again, a Quick order tab in My Account, and limits by customer role.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin (WooCommerce must be active).<\/li>\n<li>Go to WooCommerce &gt; Settings &gt; Quick order and click \"create a Quick order page\", or add the \"Quick order form\" block to any page.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20show%20wholesale%20prices%3F\"><h3>Does it show wholesale prices?<\/h3><\/dt>\n<dd><p>Yes. The form shows and charges each customer's own price, as WooCommerce and your pricing plugins calculate it for them.<\/p><\/dd>\n<dt id=\"what%20can%20be%20ordered%20through%20the%20form%3F\"><h3>What can be ordered through the form?<\/h3><\/dt>\n<dd><p>Published, purchasable products that are in stock or on backorder: simple products and individual variations of variable products. Other product types (bundles, composites, subscriptions, bookings and the like) need their product page, where their options are chosen, so the form doesn't offer them; developers can allow more types with the <code>aovup_qof_product_types<\/code> filter. Variations with an \"Any\" option need the product page too.<\/p>\n\n<p>The product's catalog visibility can be \"Shop and search results\", \"Shop only\" or \"Search results only\" (handy for order-only items you keep out of the shop). Products set to \"Hidden\" are never offered.<\/p><\/dd>\n<dt id=\"does%20it%20respect%20plugins%20that%20hide%20products%20from%20some%20customers%3F\"><h3>Does it respect plugins that hide products from some customers?<\/h3><\/dt>\n<dd><p>The form uses WooCommerce's own answers: a product that WooCommerce reports as hidden from the catalogue or not purchasable for the current customer is not offered. Plugins that hide products only by filtering the shop's product lists don't change those answers; with such a plugin, use the <code>aovup_qof_product_orderable<\/code> filter to keep its hidden products out of the form too.<\/p><\/dd>\n<dt id=\"can%20guests%20use%20it%3F\"><h3>Can guests use it?<\/h3><\/dt>\n<dd><p>Yes, unless you choose \"Signed-in customers only\".<\/p><\/dd>\n<dt id=\"how%20does%20the%20paste%20box%20read%20my%20list%3F\"><h3>How does the paste box read my list?<\/h3><\/dt>\n<dd><p>One product per line: the SKU, then the quantity, separated by a comma, semicolon, tab or space. A missing quantity counts as 1, and a header line \"SKU\" is skipped. A line whose quantity isn't a whole number above 0 is not added: it stays in the box with a message, so you can correct it.<\/p>\n\n<p>Up to 200 different SKUs are looked up at once, and the order list holds up to 200 lines. Lines past either limit stay in the box with a message saying so: add the list to the cart, then add the rest in a second step.<\/p><\/dd>\n<dt id=\"can%20someone%20use%20the%20form%20to%20load%20my%20server%3F\"><h3>Can someone use the form to load my server?<\/h3><\/dt>\n<dd><p>The search, the SKU lookup and the additions to the cart are public, like the shop itself, so each IP address can make up to 120 searches, 20 lookups and 20 additions to the cart a minute (several buyers in one office share an address, and IPv6 addresses count by their \/64 network). Past that, the form says so and asks them to wait a minute; nothing they typed is lost. With a persistent object cache (Redis or Memcached, for example) the counts are kept there, exactly, and search answers are reused for a minute; if the cache stops counting, the limits are off while that lasts and WooCommerce &gt; Status &gt; Logs (source \"aovup-qof\") says so. Without one, search answers aren't kept, so new searches don't add rows to your database. Signed-in shop managers aren't limited. Developers can change the limits with the <code>aovup_qof_request_limits<\/code> filter and the reuse time with <code>aovup_qof_search_cache_seconds<\/code>.<\/p><\/dd>\n<dt id=\"my%20store%20is%20behind%20a%20proxy%2C%20load%20balancer%20or%20cdn.%20does%20that%20matter%3F\"><h3>My store is behind a proxy, load balancer or CDN. Does that matter?<\/h3><\/dt>\n<dd><p>It can. If the proxy doesn't pass your visitors' own addresses on to WordPress, every visitor seems to come from the proxy's address, so they all share one count, and 20 additions to the cart a minute become a limit for the whole store that can refuse real orders. When private, shared (CGNAT) or loopback addresses (such as 10.0.0.5, 100.64.0.1 or 127.0.0.1, also written as IPv6) reach the limits in 3 different minutes within 24 hours, Tools &gt; Site Health, the Plugins screen and the settings tab say so, from one such address or several. Ask your host to pass the visitor's address on (for example with Apache's mod_remoteip or nginx's real_ip module), or return the visitor's real address from the <code>aovup_qof_request_limit_ip<\/code> filter.<\/p><\/dd>\n<dt id=\"does%20it%20send%20data%20anywhere%3F\"><h3>Does it send data anywhere?<\/h3><\/dt>\n<dd><p>No. The plugin makes no outside requests.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>\"Add all to cart\" says \"1 product added to your cart\" for one product (the store words the count in its own language), and the messages about lines left in the box no longer say \"1 lines\".<\/li>\n<li>A pasted line whose quantity isn't a whole number above 0 is no longer added with a quantity of 1: it stays in the box, and a message names it.<\/li>\n<li>The notice after \"Add all to cart\" shows its \"View cart\" and \"Checkout\" buttons side by side in every theme (Twenty Twenty-Five staggered them).<\/li>\n<li>When private, shared (CGNAT) or loopback addresses reach the request limits in 3 different minutes within 24 hours (a proxy that doesn't pass visitors' addresses on, so every visitor shares one count), Site Health, the Plugins screen and the settings tab say so and what to do.<\/li>\n<li>A visitor whose session ended while the page was open (on a form for signed-in customers) is told to sign in again, instead of a general error, and a page whose security token is refused even after a fresh one says to reload it.<\/li>\n<li>A persistent object cache that stops counting requests is now written to WooCommerce &gt; Status &gt; Logs, instead of switching the limits off silently.<\/li>\n<li>The \"too many\" message for additions to the cart no longer names a button the customer may not have clicked.<\/li>\n<li>Uninstalling: the data stays while another edition is installed, also from a renamed folder, and every site of a multisite network is cleaned up by its own setting.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>\"Add all to cart\" is limited too: 20 requests a minute per address, like the SKU lookup.<\/li>\n<li>IPv6 addresses count by their \/64 network for all limits.<\/li>\n<li>With a persistent object cache the limits count exactly; without one, search answers are no longer kept, so new searches don't write to the database.<\/li>\n<li>A product that another plugin hides from the customer (WooCommerce's visibility filter, as B2B plugins use it) is never named in the form's messages.<\/li>\n<li>Clearer messages when a limit is reached or the store doesn't answer.<\/li>\n<li>Uninstall also removes the plugin's temporary data.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"A fast order form for B2B and repeat buyers: find products by name or SKU, paste a list of SKUs, add everything to the cart, order again.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/396049","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=396049"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/themealien"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=396049"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=396049"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=396049"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=396049"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=396049"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=396049"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}