Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/afaz2297/afaz-stock-desk-woocommerce/archive/refs/heads/main.zipUpdate the stock quantity of every WooCommerce product and variation from one clean admin screen. Inline editing, bulk updates, instant saving, no page reloads.
Why
Restocking a WooCommerce store normally means opening each product, scrolling to the Inventory tab, typing a number and pressing Update. For a shop that restocks weekly, that is dozens of page loads for a two-minute job.
This plugin adds a single Product Stock screen. Every product is listed with its image, name, SKU, category and stock badge, next to one editable quantity box. Type the number, press Enter, done.
Because the screen exposes nothing except the quantity, it is safe to hand to a shop manager or a warehouse assistant — nobody can rename a product or change a price by accident.
Features
- One screen listing every product with thumbnail, name, SKU, category and status badge
- Inline quantity editing saved over AJAX, with
+/−steppers - Bulk updates: set, increase or decrease the stock of selected products
- "Select all in this view" reaches every product matching the current filters, not just the page
- Variations rendered as their own editable rows under the parent product
- Live status badges: In stock, Low stock, Out of stock, On backorder
- Search by product name or SKU
- Filter by stock status and product category, sort by name or date
- Optional automatic enabling of Track stock quantity for this product
- Settings panel built into the screen — no separate options page
- Fully translatable, ships with a POT file
- HPOS compatible
Requirements
| WordPress | 6.5 or newer |
| WooCommerce | 8.0 or newer |
| PHP | 7.4 or newer |
Installation
From a release ZIP
- Download the latest ZIP from the Releases page.
- In WordPress go to Plugins → Add New → Upload Plugin and choose the ZIP.
- Activate, then open Product Stock in the admin menu.
From source
git clone https://github.com/afaz2297/afaz-stock-desk-woocommerce.git
Place the folder inside wp-content/plugins/ and activate it.
Usage
Open Product Stock in the admin sidebar. It sits just above WooCommerce.
- Type a number in a stock box and press Enter — it saves immediately
- Press Esc to discard an edit before it saves
- Use
+/−for one-at-a-time adjustments; the save is debounced - Tick several rows to open the bulk bar, then set / increase / decrease them together
- The gear icon opens the settings panel
Bulk updates
Selecting rows reveals a bulk bar with three actions — Set stock to, Increase by and Decrease by. If the current filters match more products than the page shows, a link offers to select all of them.
Updates run in batches of 20 through WooCommerce's own stock functions, with live progress, so a large catalogue never blocks on one giant request. One bulk action resolves up to 1,000 products; raise or lower that with asdw_bulk_limit.
A note on "Auto-enable stock tracking"
This setting is on by default. When a product that was not tracking stock is rendered on the screen, tracking is switched on and its quantity starts at 0, which WooCommerce reads as out of stock. Entering the real number fixes it instantly.
If you would rather not touch existing products, turn the setting off. Tracking is then only enabled for a product when you actually save a quantity for it.
Developer reference
Filters
| Filter | Description |
|---|---|
asdw_settings |
Filter the resolved settings array. |
asdw_capability |
Capability required to open the screen. Default manage_woocommerce. |
asdw_menu_position |
Admin menu position. Default 55.4 (WooCommerce sits at 55.5). |
asdw_unsupported_product_types |
Product types that never hold a quantity. Default grouped, external. |
asdw_query_args |
WP_Query arguments used to list products. |
asdw_bulk_limit |
Maximum products one bulk action may resolve. Default 1000. |
Actions
| Action | Description |
|---|---|
asdw_stock_updated |
Fires after a quantity is saved. Receives $product_id, $quantity, $product. |
Example
// Let shop editors use the screen too.
add_filter( 'asdw_capability', function () {
return 'edit_products';
} );
// Log every change.
add_action( 'asdw_stock_updated', function ( $product_id, $quantity ) {
error_log( sprintf( 'Stock for #%d set to %s', $product_id, $quantity ) );
}, 10, 2 );
Project structure
afaz-stock-desk-woocommerce/
├── afaz-stock-desk-woocommerce.php Plugin header, constants, bootstrap
├── uninstall.php Removes the option on delete
├── readme.txt WordPress.org readme
├── includes/
│ ├── class-asdw-plugin.php Container
│ ├── class-asdw-settings.php Option storage + sanitization
│ ├── class-asdw-stock.php WooCommerce stock helpers
│ ├── class-asdw-list-screen.php Menu, query, rendering
│ └── class-asdw-ajax.php AJAX endpoints
├── assets/
│ ├── css/admin.css
│ └── js/admin.js
└── languages/
└── afaz-stock-desk-woocommerce.pot
Security
- Every AJAX request is nonce-checked and capability-checked
- Listing filters passed by GET are verified with a nonce and a capability check before being read
- All input is sanitized, all output escaped
- Stock writes go through
wc_update_product_stock()so WooCommerce stays authoritative
Found something? Please open a private security advisory rather than a public issue.
Contributing
Pull requests are welcome. Please follow the WordPress PHP coding standards and keep the plugin dependency-free.
Author
Afaz Alif — LinkedIn
Helping SMEs build modern, functional, conversion-focused e-commerce sites that rank and convert. Six years of WooCommerce and eCommerce work with startups in jewelry, peptides, clothing, beauty and lifestyle, taking stores from $0 to $10K–$50K+ monthly revenue through better store structure, product pages, checkout flow and conversion-focused design.
Trademark notice
This is an independent extension for WooCommerce. It is not affiliated with, endorsed by, or sponsored by Automattic Inc. or WooCommerce. "WooCommerce" is a trademark of Automattic Inc., used here only to describe what this plugin works with.
License
GPL-2.0-or-later. See LICENSE.