{"id":306134,"date":"2026-05-26T15:43:48","date_gmt":"2026-05-26T15:43:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/advanced-bulk-edit-g2-for-woocommerce\/"},"modified":"2026-08-24T13:03:28","modified_gmt":"2026-08-24T13:03:28","slug":"wpmelon-advanced-bulk-edit-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/ur.wordpress.org\/plugins\/wpmelon-advanced-bulk-edit-for-woocommerce\/","author":23444308,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.0","stable_tag":"1.2.0","tested":"7.1","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"WPMelon Advanced Bulk Edit for WooCommerce","header_author":"WPMelon","header_description":"Excel-like bulk editing interface for WooCommerce products","assets_banners_color":"d7d5d6","last_updated":"2026-08-24 13:03:28","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wpmelon.com\/bulk-edit\/","header_author_uri":"https:\/\/wpmelon.com\/","rating":0,"author_block_rating":0,"active_installs":100,"downloads":582,"num_ratings":0,"support_threads":3,"support_threads_resolved":3,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"wpmelon","date":"2026-05-26 15:43:27"},"1.2.0":{"tag":"1.2.0","author":"wpmelon","date":"2026-08-24 13:03:28"}},"upgrade_notice":{"1.2.0":"<p>Major feature release: upsells\/cross-sells, shipping class, product URL and button text editing, tags and sale-date filters, view import\/export, SKU match modes, third-party product types, and many fixes.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3549389,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3549389,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3549389,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3549389,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.2.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3549389,"resolution":"1","location":"assets","locale":"","width":1952,"height":1149},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3549389,"resolution":"2","location":"assets","locale":"","width":549,"height":546},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3549389,"resolution":"3","location":"assets","locale":"","width":1683,"height":992},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3549389,"resolution":"4","location":"assets","locale":"","width":337,"height":266},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3549389,"resolution":"5","location":"assets","locale":"","width":1950,"height":1161},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3549389,"resolution":"6","location":"assets","locale":"","width":2184,"height":627}},"screenshots":{"1":"The main grid with inline editing \u2014 click any cell to edit, drag the fill handle to apply values to neighbors.","2":"A variable product expanded to show its variations as child rows.","3":"Filter panel with category, product type, stock status, and text filters.","4":"Column management \u2014 show, hide, reorder, and pin columns per user.","5":"Dark mode enabled.","6":"Bulk edit \u2014 decrease prices by a percentage across a multi-product selection, previewed in the grid before saving."}},"plugin_section":[],"plugin_tags":[11143,6601,44144,149419,21773],"plugin_category":[45],"plugin_contributors":[255349],"plugin_business_model":[],"class_list":["post-306134","plugin","type-plugin","status-publish","hentry","plugin_tags-bulk-edit","plugin_tags-inventory","plugin_tags-product-bulk-edit","plugin_tags-product-editor","plugin_tags-woocommerce-products","plugin_category-ecommerce","plugin_contributors-wpmelon","plugin_committers-wpmelon","plugin_support_reps-yasg"],"banners":{"banner":"https:\/\/ps.w.org\/wpmelon-advanced-bulk-edit-for-woocommerce\/assets\/banner-772x250.png?rev=3549389","banner_2x":"https:\/\/ps.w.org\/wpmelon-advanced-bulk-edit-for-woocommerce\/assets\/banner-1544x500.png?rev=3549389","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/wpmelon-advanced-bulk-edit-for-woocommerce\/assets\/icon-128x128.png?rev=3549389","icon_2x":"https:\/\/ps.w.org\/wpmelon-advanced-bulk-edit-for-woocommerce\/assets\/icon-256x256.png?rev=3549389","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/wpmelon-advanced-bulk-edit-for-woocommerce\/assets\/screenshot-1.png?rev=3549389","caption":"The main grid with inline editing \u2014 click any cell to edit, drag the fill handle to apply values to neighbors."},{"src":"https:\/\/ps.w.org\/wpmelon-advanced-bulk-edit-for-woocommerce\/assets\/screenshot-2.png?rev=3549389","caption":"A variable product expanded to show its variations as child rows."},{"src":"https:\/\/ps.w.org\/wpmelon-advanced-bulk-edit-for-woocommerce\/assets\/screenshot-3.png?rev=3549389","caption":"Filter panel with category, product type, stock status, and text filters."},{"src":"https:\/\/ps.w.org\/wpmelon-advanced-bulk-edit-for-woocommerce\/assets\/screenshot-4.png?rev=3549389","caption":"Column management \u2014 show, hide, reorder, and pin columns per user."},{"src":"https:\/\/ps.w.org\/wpmelon-advanced-bulk-edit-for-woocommerce\/assets\/screenshot-5.png?rev=3549389","caption":"Dark mode enabled."},{"src":"https:\/\/ps.w.org\/wpmelon-advanced-bulk-edit-for-woocommerce\/assets\/screenshot-6.png?rev=3549389","caption":"Bulk edit \u2014 decrease prices by a percentage across a multi-product selection, previewed in the grid before saving."}],"raw_content":"<!--section=description-->\n<p>WooCommerce\u2019s built-in product editor was not designed for bulk editing hundreds or thousands of WooCommerce products. Every price change, every stock update, every tiny fix means opening a product, scrolling, clicking, saving, and waiting for the page to reload.<\/p>\n\n<p><strong>WPMelon Advanced Bulk Edit<\/strong> replaces that workflow with a single spreadsheet-style grid. You filter to the products you care about, edit cells inline like in Excel or Google Sheets, and save everything at once.<\/p>\n\n<p>It is built for people who manage their own catalog \u2014 shop owners, agencies, and freelancers who are tired of clicking through hundreds of product pages to update a price or fix a typo.<\/p>\n\n<h4>Why another WooCommerce bulk product editor?<\/h4>\n\n<p>This plugin takes a different approach \u2014 a fast, modern grid that lives inside your WordPress admin and talks directly to your WooCommerce data.<\/p>\n\n<p>No rebuilding of your catalog on a third-party server. No syncing. Less waiting.<\/p>\n\n<h4>What you get in the free version<\/h4>\n\n<ul>\n<li><strong>Spreadsheet grid<\/strong> with inline editing \u2014 click a cell, type, move on<\/li>\n<li><strong>Variations inline<\/strong> \u2014 expand any variable product and edit its variations as child rows, with the parent\u2013child grouping preserved when you sort<\/li>\n<li><strong>Fill handle<\/strong> \u2014 drag a cell down (or up) to copy its value to neighboring cells, Excel-style<\/li>\n<li><strong>Bulk operations<\/strong> \u2014 apply percentage price adjustments, find-and-replace, text append and prepend, and bulk category and tag assignment across many products at once<\/li>\n<li><strong>Wide field coverage<\/strong> \u2014 prices, stock, SKUs, statuses, categories, tags, shipping class, menu order, upsells and cross-sells, product URL and button text for external products, and more<\/li>\n<li><strong>Saved views<\/strong> \u2014 save filter sets and column layouts as named views for one-click recall, and share them between sites with view import\/export<\/li>\n<li><strong>Filters<\/strong> \u2014 filter by category, tags, product type, stock status, name and SKU (with exact\/contains match modes and CSV SKU lists), description, dates created, modified, on sale, or image uploaded, and more<\/li>\n<li><strong>Column management<\/strong> \u2014 show, hide, reorder, resize, and pin columns; each user's layout is saved separately<\/li>\n<li><strong>Keyboard shortcuts<\/strong> \u2014 navigate and edit without touching the mouse<\/li>\n<li><strong>Product operations<\/strong> \u2014 duplicate and change status right from the grid<\/li>\n<li><strong>Image and gallery management<\/strong> \u2014 set featured images and manage product galleries directly from the grid<\/li>\n<li><strong>CSV export<\/strong> \u2014 export the current filtered view to CSV in one click, including large catalogs<\/li>\n<li><strong>Dark mode<\/strong> \u2014 switch between light and dark themes<\/li>\n<li><strong>Fast loading<\/strong> \u2014 virtualized rendering handles thousands of products without the browser choking, with a configurable page size<\/li>\n<li><strong>Plays well with others<\/strong> \u2014 products from third-party type plugins (such as bundles or subscriptions) appear in the grid with their common fields editable, and an optional setting re-fires WordPress save hooks so sync and cache plugins stay in step<\/li>\n<\/ul>\n\n<h4>Built on proper WooCommerce APIs<\/h4>\n\n<p>All edits go through WooCommerce's own CRUD layer \u2014 the same code paths the core admin uses. That means hooks fire correctly, caches are invalidated, and no database is touched directly except where documented and safe. Your other plugins (tax, shipping, reviews, SEO) continue to work normally.<\/p>\n\n<h4>Variable products are first-class<\/h4>\n\n<p>Variable products and their variations are treated as related rows in the grid, not as a popup or a separate screen. Expand a parent, see its variations, edit them inline, save. Sorting the grid preserves the parent\u2013child hierarchy instead of scattering variations away from their parents.<\/p>\n\n<h4>Pro version<\/h4>\n\n<p>If you need more \u2014 paste from Excel\/Google Sheets, Operation History with restore, regex find-and-replace, price rounding, custom and ACF meta field editing, custom taxonomies, bulk variation creation, variation attribute editing, WPML support, fine-grained selection tools for the current grid page, and more \u2014 there is a paid Pro version available at <a href=\"https:\/\/wpmelon.com\/bulk-edit\/\">wpmelon.com<\/a>.<\/p>\n\n<p>The free version is genuinely useful on its own. Pro is for stores that need more advanced bulk-editing workflows or fields the free version doesn\u2019t touch.<\/p>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 6.0+<\/li>\n<li>WooCommerce 10.0+<\/li>\n<li>PHP 8.0+<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>In your WordPress admin, go to <strong>Plugins \u2192 Add New<\/strong>.<\/li>\n<li>Search for \"WPMelon Advanced Bulk Edit for WooCommerce\".<\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong>.<\/li>\n<li>Go to <strong>WooCommerce \u2192 Bulk Edit<\/strong> to open the grid.<\/li>\n<\/ol>\n\n<p>Or install manually:<\/p>\n\n<ol>\n<li>Download the plugin ZIP from WordPress.org.<\/li>\n<li>Go to <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong> and upload the ZIP.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Go to <strong>WooCommerce \u2192 Bulk Edit<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20modify%20my%20database%20directly%3F\"><h3>Does this plugin modify my database directly?<\/h3><\/dt>\n<dd><p>No. All edits go through WooCommerce's standard CRUD API, so your data is handled the same way the core WooCommerce admin handles it. Hooks fire, caches are invalidated, and anything your other plugins do on product save continues to work.<\/p><\/dd>\n<dt id=\"will%20it%20work%20with%20my%20theme%3F\"><h3>Will it work with my theme?<\/h3><\/dt>\n<dd><p>Yes. The plugin runs inside the WordPress admin, so your front-end theme is not involved. It only loads its interface inside the WordPress admin and does not enqueue front-end assets.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20variable%20products%20and%20variations%3F\"><h3>Does it work with variable products and variations?<\/h3><\/dt>\n<dd><p>Yes. Variations appear as child rows under their parent product. You can edit variation prices, stock, SKUs, and other fields inline, the same way you edit simple products. Sorting preserves the parent\u2013child grouping.<\/p><\/dd>\n<dt id=\"how%20many%20products%20can%20it%20handle%3F\"><h3>How many products can it handle?<\/h3><\/dt>\n<dd><p>The grid is virtualized, so it renders only the rows currently visible. In practice, stores with tens of thousands of products work fine on normal hosting. If you hit a performance wall, filter down to the subset you actually need \u2014 the grid works on whatever the filters return.<\/p><\/dd>\n<dt id=\"can%20i%20undo%20changes%3F\"><h3>Can I undo changes?<\/h3><\/dt>\n<dd><p>Edits are staged as pending changes in the grid before you save, so you can undo them or discard them entirely while they're unsaved. Once saved, the free version can't undo them \u2014 keep a backup, as you would with any bulk operation. The Pro version adds Operation History, which records each save so you can review and restore previous field values (see below).<\/p><\/dd>\n<dt id=\"is%20there%20a%20pro%20version%3F\"><h3>Is there a Pro version?<\/h3><\/dt>\n<dd><p>Yes. Pro adds paste from Excel\/Google Sheets, Operation History with restore, regex find-and-replace, price rounding, custom and ACF meta field editing, custom taxonomies, bulk variation creation, variation attribute editing, WPML support, fine-grained selection tools for the current grid page, and more. It's available at <a href=\"https:\/\/wpmelon.com\/bulk-edit\/\">wpmelon.com<\/a>. The free version is a complete, standalone tool \u2014 Pro extends it, it doesn't gate it.<\/p><\/dd>\n<dt id=\"what%20does%20operation%20history%20store%3F%20%28pro%29\"><h3>What does Operation History store? (Pro)<\/h3><\/dt>\n<dd><p>Operation History is a Pro feature, currently in beta and off by default. When you turn it on, each bulk save is recorded locally so you can review it later and restore previous field values. Each record stores the before and after values of the fields that save changed, the product and variation IDs involved, the user who made the change, and timestamps. The data lives in custom database tables on your own site and is never sent off-site. Records are kept for 30 days by default (configurable) and pruned automatically. You can turn recording on or off, clear the history at any time, and optionally have all history data removed when you uninstall Pro. The free version records nothing and creates no history tables.<\/p><\/dd>\n<dt id=\"does%20it%20support%20custom%20post%20types%3F\"><h3>Does it support custom post types?<\/h3><\/dt>\n<dd><p>The plugin targets WooCommerce products (including variations) specifically. Other post types are not supported.<\/p><\/dd>\n<dt id=\"does%20it%20support%20acf%3F\"><h3>Does it support ACF?<\/h3><\/dt>\n<dd><p>ACF field editing is a Pro feature. The free version edits WooCommerce core fields.<\/p><\/dd>\n<dt id=\"does%20it%20talk%20to%20external%20servers%3F\"><h3>Does it talk to external servers?<\/h3><\/dt>\n<dd><p>No. The free version runs entirely inside your WordPress site. It does not send data to any third-party server.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20deactivate%20the%20plugin%3F\"><h3>What happens if I deactivate the plugin?<\/h3><\/dt>\n<dd><p>Nothing. No data is lost, no cleanup is needed. The plugin only reads and writes WooCommerce product data through standard APIs; deactivating removes the bulk-edit UI and nothing else.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Added Cost of Goods (COGS) as an editable product column when WooCommerce's Cost of Goods Sold feature is enabled. Edit it inline or with the bulk-edit panel, filter products by a Cost of Goods range, and include it in CSV exports.<\/li>\n<li>Added a Published on column \u2014 show it in the grid, edit its full date and time inline, and bulk-edit it \u2014 plus a read-only Modified on column. Both are available in CSV export.<\/li>\n<li>Products with a future Published on date now appear in the grid as \"Scheduled\" (and can be filtered by that status) instead of being hidden from the default view.<\/li>\n<li>The Title filter now matches all words by default, with a choice of how multi-word searches behave. When you type two or more words, a mode dropdown appears: \"All words\" (the default) finds titles containing every word in any order, \"Any word\" matches titles containing at least one word, and \"Exact phrase\" matches the words exactly as typed.<\/li>\n<li>You can now include product attribute columns (such as Color or Size) in the CSV export. Open the Export dialog and tick the attribute columns you want \u2014 each cell lists the product's terms separated by \" | \".<\/li>\n<li>Your column layout and filters are now remembered automatically across page reloads and navigation \u2014 no need to save a view first. If you have a default view, it's still applied on load; otherwise your last working layout is restored.<\/li>\n<li>Added a Default view at the top of the Views menu that resets your columns and filters to their defaults in one click. The old per-view \"Set as default\" star is retired \u2014 your working layout now persists on its own, and any existing default view is still applied on load.<\/li>\n<li>Switching views (or to Default) with unsaved column or filter changes now asks whether to Save, Disregard, or Cancel, so a modified layout isn't lost by accident. On the Default view the prompt lets you name and save the changes as a new view before switching.<\/li>\n<li>The Views button now shows \"\u00b7 Modified\" when your columns or filters differ from the selected view (or the Default). Use Update to save the changes back to the view, or Revert to discard them; on the Default view, \"Save as new view\" lets you keep them as a brand-new view.<\/li>\n<li>Added Menu order as a product column. View it in the grid, edit it inline or with the bulk-edit panel, filter products by a menu order range, sort the whole catalog by menu order, and include it in CSV exports.<\/li>\n<li>Added Upsells and Cross-sells as editable product columns. Pick linked products from a searchable modal (by title, SKU, GTIN, or product ID), reorder them \u2014 WooCommerce shows them in the order you set \u2014 and bulk-edit them across a selection with Replace all, Add, or Remove. Both columns are available in CSV export. Links pointing at deleted products are shown as a warning rather than silently discarded, so you decide when to remove them, and a link to a draft or disabled product is flagged so you know it won't appear on your storefront. Cross-sells are editable on simple and variable products only, matching WooCommerce, which hides the field on grouped and external products because cross-sells are promoted in the cart.<\/li>\n<li>More products-per-page choices (250, 500 and 1000), plus a \"Custom\u2026\" option for any page size up to 10,000. Your page size is now saved as part of your views, so it comes back with a saved view and survives a reload.<\/li>\n<li>Added Sale From and Sale To date-range filters. Variable products are included when one of their variations matches the sale schedule you filtered for, and only the matching variations are shown.<\/li>\n<li>Added a Tags filter. Pick one or more product tags to narrow the grid to products carrying any of them; it combines with all other filters and applies to CSV exports too.<\/li>\n<li>Added the Button text field for External\/Affiliate products. View and edit the add-to-cart button label inline, change it with the bulk-edit panel (set, prepend, append, find &amp; replace, clear), and include it in CSV exports.<\/li>\n<li>Added an \"Image uploaded\" filter and grid\/CSV column showing when each product's featured image was uploaded. Filter by a date range to find products whose images changed since a given date \u2014 useful when syncing images between sites. Variations are matched on their own images, and the column is available in the column picker and CSV exports.<\/li>\n<li>Export any saved grid view as a JSON file or copyable text, and import a view exported from another account or site.<\/li>\n<li>Added support for third-party product types. WooCommerce Product Bundles products now appear in the grid with full inline and bulk editing (prices, stock, categories, images, and more), and other plugin-registered types (subscriptions, composites, etc.) show up with a safe set of editable fields. The Type filter and the grid's type badges show every registered product type under its own plugin-provided name. Variable-style third-party products (such as variable subscriptions) expand to show their variations, just like native variable products.<\/li>\n<li>Added a \"Refresh list after saving\" setting. Turn it off to keep edited products visible in the grid after saving \u2014 even when they no longer match the active filters \u2014 until you reload the list.<\/li>\n<li>Added a Product URL column for External\/Affiliate products \u2014 show it in the grid, edit it inline and in bulk (including find &amp; replace for affiliate domain migrations), and export it to CSV. A new Product URL filter finds products by their link, with contains, does not contain, starts with, ends with, is empty and is not empty modes.<\/li>\n<li>The SKU filter now has a match-mode dropdown: Contains, Is exactly, Does not contain, Starts with, and Ends with. Comma-separate several SKUs to match any of them under the chosen mode (or none of them, for \"Does not contain\"), up to 200 values. The dropdown starts on Auto, which keeps the original behavior \u2014 a single SKU is a partial match, comma-separated SKUs are exact matches \u2014 so existing saved views and searches are unchanged. Also fixed: searching for the SKU \"0\" now filters products correctly instead of being ignored.<\/li>\n<li>Added a compatibility setting that triggers the standard WordPress save hooks after each save, so sync and integration plugins detect changes made in the editor. Find it under \"Notify other plugins of changes\" in Settings \u2014 it is off by default, and the info button beside it lists exactly which hooks are fired.<\/li>\n<li>Added Shipping class as a product column. View it in the grid, edit it inline or with the bulk-edit panel \u2014 including a \"Same as parent\" option on variations \u2014 filter products by shipping class, and include it in CSV exports.<\/li>\n<li>Renamed the Created product filter to Published on to align with WordPress\/WooCommerce publishing terminology, and renamed Modified to Modified on for consistency.<\/li>\n<li>The Published on, Modified on, Sale from, and Sale to filters now appear in the filter panel only when their columns are shown in the grid, like the other filters. A date filter that has a value set stays visible even when its column is hidden.<\/li>\n<li>Updated the Pro upgrade dialog with the latest Pro features (undo &amp; rollback, paste from Excel, WPML support) and current early-bird pricing for annual and lifetime licenses.<\/li>\n<li>Fixed searching by a variation's SKU returning no results. When variations are shown in the grid, a SKU search now matches variation SKUs and displays the matching variation under its parent. Searching a product's own SKU keeps all of its variations visible.<\/li>\n<li>Fixed bulk-edit searches and saves failing after the page was left open for a long time. The page now refreshes its security token automatically, and shows a clear \"session expired or permissions changed \u2014 reload\" message in the rare case it can't recover.<\/li>\n<li>Fixed several Default-view and layout issues: selecting Default now restores columns you had hidden back to their factory visibility; deleting the view you're currently on returns you to Default and flags the layout as modified when it differs, instead of leaving a stale layout mislabeled as clean; and switching views no longer shows columns from your previous layout when \"auto-load products\" is turned off.<\/li>\n<li>Fixed the Views \"\u00b7 Modified\" indicator disappearing when you chose \"Update with current state\" on a view other than the one currently selected.<\/li>\n<li>Fixed the Views \"\u00b7 Modified\" indicator misbehaving: reverting a column change now clears it (previously it could stay stuck on), and re-selecting the same categories or filters in a different order no longer flags the layout as modified.<\/li>\n<li>Fixed the selected view being lost after a page reload \u2014 the active view is now correctly remembered instead of quietly reverting to Default on the next load.<\/li>\n<li>Fixed saving a new view before the product grid has loaded (with auto-load off) storing an empty column layout \u2014 a new view now captures your current columns in that case.<\/li>\n<li>Fixed column layout changes being silently discarded when updating a view while product auto-loading is turned off \u2014 the view now saves your columns, and the layout no longer keeps showing as modified afterward.<\/li>\n<li>Cancelling a bulk save (or restore) while a batch was mid-request no longer reports that in-progress batch as a failed save. For saves, the items in it are now shown as not attempted.<\/li>\n<li>Deleting the plugin now removes its settings and per-user interface preferences from the database, instead of leaving them behind.<\/li>\n<li>Clicking Stop during a save now cancels the in-progress request immediately, instead of only skipping the batches that hadn't started yet. Rows that still finished saving on the server are reconciled afterward, so they no longer linger as unsaved.<\/li>\n<li>Pressing Stop during a save no longer hides a real login or permission failure. If your session expired or your permissions changed mid-save, you now get the reload prompt instead of a misleading \"save stopped\" message, so you know the remaining products weren't saved and why.<\/li>\n<li>Save-stopped notifications are now translatable. The messages shown when you stop a save part-way through \u2014 including the counts of what was saved, what's still pending, and any per-product errors \u2014 now appear in your site's language.<\/li>\n<li>When a save (or a Pro Operation History restore) is rejected because you are no longer authenticated and the site replies with an HTTP 401 error (e.g. Application Passwords or an authentication plugin), the session-expired warning now appears \u2014 including when Stop was pressed mid-operation \u2014 instead of the failure looking like a cancelled run. Rejected save\/restore requests also now show the actual server error message instead of the generic \"Unknown server error\" text, which is now translatable.<\/li>\n<li>Turning off \"Manage stock\" now discards any staged Stock quantity \/ Backorders edits for that product no matter how the change is made \u2014 inline edit, fill handle, bulk edit, or paste \u2014 so stale stock values can no longer be saved once stock management is switched off.<\/li>\n<li>Fixed an error thrown when clicking \"Clear all filters\" on the \"No products match your filters\" screen.<\/li>\n<li>Switching to another app or browser tab while editing a cell no longer closes the editor. When you come back, the cell is still in edit mode with the cursor where you left it \u2014 you can keep typing, or paste a copied value straight into the cell.<\/li>\n<li>Enter-to-edit-the-next-row and the variation Select\/Deselect buttons no longer stop working after a load error, an empty filter result, or when auto-loading is disabled.<\/li>\n<li>Fixed a Cost of Goods filter issue where a product that had been converted from variable to simple could wrongly appear in the filtered results when a leftover hidden variation matched the filter.<\/li>\n<li>Fixed the Menu order filter, SKU search, and Description search wrongly including a product that had been converted from variable to simple when a leftover hidden variation matched the filter.<\/li>\n<li>Fixed date picker calendar popups following the operating system's light\/dark theme instead of the plugin's selected theme.<\/li>\n<li>Fixed toggling \"Include Variations\" reverting the grid's column layout (hidden columns, widths, pinning) to an older state and incorrectly marking the loaded view as \"Modified\". Also fixed Settings \u2192 \"Reset layout\" not restoring the default column visibility (previously hidden columns could stay hidden after a reset).<\/li>\n<li>Fixed CSV exports failing on large product sets with many columns selected. The file is now built page by page and caches are released as it goes, so the export uses far less server memory. When an export does fail, the error now names the cause and status (for example \"Export failed (500): \u2026\") instead of a generic \"Export failed\".<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Added a Bulk Edit shortcut to the WordPress admin bar for quick access to the editor from anywhere in wp-admin. It can be turned off per user from the Settings menu and is on by default.<\/li>\n<li>Fixed tall popovers overflowing past the bottom of the screen on short browser windows; they now fit within the visible area and scroll internally.<\/li>\n<li>Fixed the bulk edit page not scrolling on short browser windows, which left the toolbar, pagination, and lower admin menu items clipped and unreachable.<\/li>\n<li>Fixed form fields rendering with light backgrounds in dark mode inside popover panels (filters, Selection Manager, dropdowns), and dark-mode styling for date and time inputs \u2014 native calendar\/clock icons and picker popups now follow the dark theme too.<\/li>\n<li>Fixed the horizontal scrollbar floating in the middle of the grid instead of staying at the bottom after collapsing or expanding the Filters or Bulk Edit panel.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Bulk edit WooCommerce products in a fast Excel-like grid. Edit prices, stock, SKUs, images, categories, tags, and variations inline.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ur.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/306134","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ur.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ur.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ur.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=306134"}],"author":[{"embeddable":true,"href":"https:\/\/ur.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/wpmelon"}],"wp:attachment":[{"href":"https:\/\/ur.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=306134"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ur.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=306134"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ur.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=306134"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ur.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=306134"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ur.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=306134"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ur.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=306134"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}