{"id":354524,"date":"2026-08-16T21:57:48","date_gmt":"2026-08-16T21:57:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/pa-automatic-product-sorting-for-woocommerce\/"},"modified":"2026-10-20T08:41:05","modified_gmt":"2026-10-20T08:41:05","slug":"atelier-product-sorting-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/azb.wordpress.org\/plugins\/atelier-product-sorting-for-woocommerce\/","author":23544006,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.0","stable_tag":"1.2.0","tested":"7.1.3","requires":"6.9","requires_php":"8.3","requires_plugins":null,"header_name":"Atelier - Automatic Product Sorting for WooCommerce","header_author":"Plugins Atelier","header_description":"Essential automatic product sorting by category: ranks products using observed net units, catalog availability, and new arrivals, with Preview, Apply, and a safe return to the native baseline.","assets_banners_color":"bfc3b2","last_updated":"2026-10-20 08:41:05","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/pluginsatelier.com\/en\/product-sorting\/","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":412,"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":"pluginsatelier","date":"2026-08-16 21:57:21","revision":3650211},"1.1.0":{"tag":"1.1.0","author":"pluginsatelier","date":"2026-10-02 09:53:55","revision":3724508},"1.1.1":{"tag":"1.1.1","author":"pluginsatelier","date":"2026-10-14 19:13:44","revision":3747003},"1.1.2":{"tag":"1.1.2","author":"pluginsatelier","date":"2026-10-19 19:39:28","revision":3755435},"1.2.0":{"tag":"1.2.0","author":"pluginsatelier","date":"2026-10-20 08:41:05","revision":3756186}},"upgrade_notice":{"1.2.0":"<p>Adds clearer category guidance, availability explanations, and Spanish\ndiagnostics. Review a Preview before publishing a new order.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3650211,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3650211,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3650211,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3650211,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0","1.1.1","1.1.2","1.2.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3650211,"resolution":"1","location":"assets","locale":"","width":1280,"height":688},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3650211,"resolution":"2","location":"assets","locale":"","width":1280,"height":688},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3650211,"resolution":"3","location":"assets","locale":"","width":1280,"height":688}},"screenshots":{"1":"Every category at a glance: sorted, waiting for review or paused, and what to do next.","2":"Preview: see what would move and why, before you publish anything.","3":"History: go back to an earlier order after seeing exactly what changes."}},"plugin_section":[],"plugin_tags":[26298,4423,37973,284802,286],"plugin_category":[45,57],"plugin_contributors":[276027],"plugin_business_model":[],"class_list":["post-354524","plugin","type-plugin","status-publish","hentry","plugin_tags-best-sellers","plugin_tags-out-of-stock","plugin_tags-product-sorting","plugin_tags-sort-products","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-taxonomy","plugin_contributors-pluginsatelier","plugin_committers-pluginsatelier"],"banners":{"banner":"https:\/\/ps.w.org\/atelier-product-sorting-for-woocommerce\/assets\/banner-772x250.png?rev=3650211","banner_2x":"https:\/\/ps.w.org\/atelier-product-sorting-for-woocommerce\/assets\/banner-1544x500.png?rev=3650211","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/atelier-product-sorting-for-woocommerce\/assets\/icon-128x128.png?rev=3650211","icon_2x":"https:\/\/ps.w.org\/atelier-product-sorting-for-woocommerce\/assets\/icon-256x256.png?rev=3650211","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/atelier-product-sorting-for-woocommerce\/assets\/screenshot-1.png?rev=3650211","caption":"Every category at a glance: sorted, waiting for review or paused, and what to do next."},{"src":"https:\/\/ps.w.org\/atelier-product-sorting-for-woocommerce\/assets\/screenshot-2.png?rev=3650211","caption":"Preview: see what would move and why, before you publish anything."},{"src":"https:\/\/ps.w.org\/atelier-product-sorting-for-woocommerce\/assets\/screenshot-3.png?rev=3650211","caption":"History: go back to an earlier order after seeing exactly what changes."}],"raw_content":"<!--section=description-->\n<p>Your categories sort themselves.<\/p>\n\n<p>What sells most moves up. What is sold out moves down. New arrivals get their\nplace. And you review the order before publishing it.<\/p>\n\n<h4>What sells<\/h4>\n\n<p>Net units over the last 30 days, with refunds deducted. Each run takes a\ncomplete snapshot of that period and shows you which orders were counted and\nwhich were not.<\/p>\n\n<h4>What is left<\/h4>\n\n<p>The availability your catalog reported at the time of the run. What cannot be\nbought goes to the end, however many units it sold before.<\/p>\n\n<h4>What has just arrived<\/h4>\n\n<p>A new product gets its place for a window you set per category: 14 days by\ndefault, from 1 to 90.<\/p>\n\n<h4>You keep the last word<\/h4>\n\n<p>Turning the plugin on changes nothing in your store. Preview shows what would\nmove and why. You review the order before publishing it. Pin products to keep\nthem in place, pause a category, restore WooCommerce's native order, or return\nto an earlier published order. No black boxes: every position comes with its\nexplanation.<\/p>\n\n<h4>Free is complete<\/h4>\n\n<p>No limits on categories, products, or orders. No account, key, or expiry.<\/p>\n\n<h4>Pro<\/h4>\n\n<p>Pro adds named, versioned strategies, net revenue as a weighted signal, and\nscheduled editorial promotions for each category. Pro replaces Free as the\nsorting edition; both can stay installed, but only one sorts at a time. Pro\nkeeps working if you do not renew.<\/p>\n\n<p><a href=\"https:\/\/pluginsatelier.com\/en\/product-sorting\/\">Learn about Pro<\/a>.<\/p>\n\n<h4>What it does not do<\/h4>\n\n<ul>\n<li>It doesn\u2019t promise more sales. It sorts by an observed signal; what happens\nnext depends on your store.<\/li>\n<li>No AI, \u201csmart\u201d scores, per-visitor personalisation or random order.<\/li>\n<li>It does not know real-time stock or the units actually free at checkout.<\/li>\n<li>It does not collect impressions, clicks, or sessions.<\/li>\n<\/ul>\n\n<h4>Privacy<\/h4>\n\n<p>All calculations run on your server. The plugin sends no telemetry or store\ndata, depends on no external service, and makes no network request to sort\nproducts. WordPress itself may still check WordPress.org for updates.<\/p>\n\n<h4>Where it sorts and where it does not<\/h4>\n\n<p>The plugin sorts only when it can identify one category unambiguously.<\/p>\n\n<p>It serves the ranking in:<\/p>\n\n<ul>\n<li>The main category archive of a classic theme when WooCommerce uses its\ndefault or manual order.<\/li>\n<li>The Product Collection block in Default\/inherit mode inside the category\ntemplate.<\/li>\n<li>The Product Collection block in Custom+Manual mode when the category is\nunambiguous and no other ordering criterion exists, including editor preview.<\/li>\n<\/ul>\n\n<p>It keeps the native order for: an explicit order selected by the visitor,\nsearch, the main shop archive, queries spanning several categories, the Store\nAPI, external search engines, and custom SQL queries from other plugins.<\/p>\n\n<p>Not claimed as supported: shortcodes, page builders, headless setups,\nWPML\/Polylang, and page or CDN caches. The dashboard is available in English\nand Spanish, is ready for translation, and supports RTL; multilingual catalog\nsorting has not been verified.<\/p>\n\n<p><strong>WordPress Multisite is not supported.<\/strong> The plugin detects it, explains the\nlimitation, and does nothing else: no tables, no scheduled work, and no\nstorefront intervention on any site in the network.<\/p>\n\n<h3>Development<\/h3>\n\n<p>Admin source: <code>admin-ui\/src\/<\/code>; compiled files: <code>assets\/admin\/<\/code>. With Node 20+\nand npm 10+, rebuild with <code>npm ci &amp;&amp; npm run build:assets<\/code>. To rebuild the PHP\nautoloader, run <code>composer install --no-dev --classmap-authoritative<\/code>. The\nplugin includes its production assets and autoloader.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce, which is a required dependency.<\/li>\n<li>Install and activate Atelier - Automatic Product Sorting for WooCommerce.<\/li>\n<li>Go to <strong>WooCommerce \u2192 Product sorting<\/strong> and follow the guided first run.<\/li>\n<\/ol>\n\n<p>Requirements: WordPress 6.9 or later, PHP 8.3 or later, WooCommerce 10.8 or\nlater, MySQL or MariaDB with InnoDB, and a single-site installation.<\/p>\n\n<p>Administrators and shop managers can view the dashboard. Publishing,\nrestoring, or changing settings also requires permission to manage\nWooCommerce.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20activating%20it%20change%20anything%20in%20my%20store%3F\"><h3>Does activating it change anything in my store?<\/h3><\/dt>\n<dd><p>No. Activation prepares the plugin's tables; the native order remains until\nyou publish. Calculation is read-only for WooCommerce orders and products.<\/p><\/dd>\n<dt id=\"do%20i%20have%20to%20confirm%20every%20update%3F\"><h3>Do I have to confirm every update?<\/h3><\/dt>\n<dd><p>No. The first Apply for a category approves the formula and policy: in\npractice, you approve how products will be sorted in that category. After that,\nwhen only data changes in your catalog or orders, a complete new order may\npublish automatically.<\/p>\n\n<p>Changing how products are sorted returns the category to Preview. Pause keeps\nthe current order; Restore returns to WooCommerce's native order; returning to\nan earlier order keeps it in place until you publish again. The dashboard and\nhistory show what changed, how, and when.<\/p><\/dd>\n<dt id=\"which%20orders%20are%20counted%20in%20the%2030-day%20sales%20signal%3F\"><h3>Which orders are counted in the 30-day sales signal?<\/h3><\/dt>\n<dd><p>Each run takes a complete U30 snapshot. It includes every order that\nWooCommerce exposes as paid and in an eligible status; it does not\nautomatically exclude test orders. The snapshot shows which orders were counted\nand which were not.<\/p><\/dd>\n<dt id=\"what%20does%20each%20category%20status%20mean%2C%20and%20what%20should%20i%20do%3F\"><h3>What does each category status mean, and what should I do?<\/h3><\/dt>\n<dd><p>The dashboard explains every status and its next action. <strong>Not calculated<\/strong>,\n<strong>Calculating<\/strong>, and <strong>Ready for review<\/strong> cover the first publication;\n<strong>Published<\/strong> is serving an order; <strong>Outdated<\/strong>, <strong>Degraded coverage<\/strong>, and\n<strong>Blocked<\/strong> require a new run or diagnostic review; <strong>Paused<\/strong> keeps the\ncurrent order; <strong>Restored<\/strong> serves WooCommerce's native order.<\/p><\/dd>\n<dt id=\"how%20do%20i%20go%20back%20if%20i%20do%20not%20like%20the%20order%3F\"><h3>How do I go back if I do not like the order?<\/h3><\/dt>\n<dd><p>Restore immediately returns the category to WooCommerce's native order. It\ndeletes nothing; history remains available.<\/p>\n\n<p>You can return to an earlier saved order after seeing what would change. An\norder containing a product that no longer exists is rejected rather than\npartially published. It remains in place until you publish again.<\/p>\n\n<p>If calculation is failing, <em>Run now<\/em> resumes blocked or outdated work instead.<\/p><\/dd>\n<dt id=\"what%20is%20stored%2C%20and%20for%20how%20long%3F\"><h3>What is stored, and for how long?<\/h3><\/dt>\n<dd><p>In its own tables, the plugin keeps published and proposed product orders,\ntheir explanations, and the history needed to restore an earlier order. For\neach category it keeps the current order, the latest proposal, and the five\nprevious published orders. Other saved orders are removed after seven days.\nIt neither modifies nor copies orders or products and stores no per-order\nsales contribution.<\/p>\n\n<p>Diagnostics are calculated from live state and have no history in Free.<\/p><\/dd>\n<dt id=\"what%20happens%20with%20custom%20order%20statuses%3F\"><h3>What happens with custom order statuses?<\/h3><\/dt>\n<dd><p>The plugin uses WooCommerce's public APIs. Diagnostics report correctly\nregistered custom statuses as unclassified, with their observed order count.<\/p>\n\n<p>An incompletely registered status may be invisible, especially under HPOS.\nThe plugin cannot count or report orders WooCommerce does not return and does\nnot invent a zero; the dashboard and export declare this limitation.<\/p>\n\n<p>Fix that integration and recalculate. The plugin does not read internal order\ntables as a workaround.<\/p><\/dd>\n<dt id=\"what%20is%20removed%20on%20uninstall%3F\"><h3>What is removed on uninstall?<\/h3><\/dt>\n<dd><p>Its tables, options, caches, scheduled tasks, and capability. WooCommerce data\nis not touched. While another edition of this plugin is still installed,\nuninstalling keeps that shared data, because the other edition uses it.<\/p>\n\n<p>Deactivation removes storefront ordering and scheduled work but keeps\nconfiguration and history. Reactivation starts in native order until another\nreview and publication.<\/p><\/dd>\n<dt id=\"what%20information%20can%20i%20send%20to%20support%3F\"><h3>What information can I send to support?<\/h3><\/dt>\n<dd><p>The downloadable JSON diagnostic contains allowlisted versions, statuses,\ncounts, and category identifiers\u2014not secrets, personal data, order content,\ncategory names, or store URL.<\/p>\n\n<p>It is generated only on request and never sent automatically.<\/p><\/dd>\n<dt id=\"how%20do%20i%20get%20help%3F\"><h3>How do I get help?<\/h3><\/dt>\n<dd><p>Email support@pluginsatelier.com and attach the exportable diagnostic.<\/p>\n\n<p>The WordPress.org forum is not a promised support channel. Email is.<\/p>\n\n<p>Phone, chat, store access, consulting, and custom development are outside Free.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Clearer category guidance and guided Preview help you review before publishing.<\/li>\n<li>Availability explanations distinguish catalog stock from what can be bought;\ndiagnostics and the downloadable report are available in Spanish.<\/li>\n<li>Free includes its own Spanish translations and a dismissible dashboard link\nto learn about Pro.<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Fix: no longer says Pro does the sorting on a Multisite network, where neither edition sorts.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Fix: keeps the ranking breakdown and editorial promotion details when a store returns from Pro to Free.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Spanish is included, using WooCommerce's Spanish terms.<\/li>\n<li>Only one edition sorts at a time; Plugins explains which one. Inactive\neditions still declare HPOS compatibility, and uninstall keeps shared data\nwhile another edition is installed.<\/li>\n<li>Fix: explanations from another edition display correctly; movement labels\nuse singular and plural; dates follow your admin language; search and\nmovement filters align on desktop and mobile.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Sorts each WooCommerce category on its own: best sellers move up, sold-out products move down, new arrivals get their place. You review first.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/354524","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=354524"}],"author":[{"embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/pluginsatelier"}],"wp:attachment":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=354524"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=354524"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=354524"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=354524"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=354524"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=354524"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}