Bulk Edit affecting order data
-
Bulk packing slip generation via the admin orders list is followed, approximately two seconds later, by line-item data loss on one or more of the orders included in that batch. Affected line items have
_product_id,_qty,_line_subtotal,_line_totaland_line_taxset to0, while plugin-added meta on the same rows survives intact.Single-order document generation does not reproduce it. Orders with nine separate single-order generations are unaffected.
Approximate rate: 1–2 orders corrupted per 20-order batch (~5–7%).
Reproduction — three consecutive occurrences in seven minutes
All three bulk requests came from the same admin session on 5 October 2026. Corruption timestamps are from a
BEFORE UPDATEtrigger onwp_woocommerce_order_itemmetathat records the previous value. Bulk request (UTC)Orders in requestCorruptedCorruption logged09:04:008 orders (144256–144270)144267, 14427009:04:0209:07:5820 orders (144271–144310)14429409:08:0009:11:0620 orders (144311–144351)144325, 14432609:11:08Example request:
GET /wp-admin/admin-ajax.php?action=generate_wpo_wcpdf &document_type=packing-slip&bulk&_wpnonce=b31dacf513 &order_ids=144270x144269x144268x144267x144266x144265x144264x144256 HTTP/1.1 200 3278415 Referer: /wp-admin/admin.php?page=wc-orders&status=wc-processing&paged=4Every corrupted order appeared in the
order_idsof the request two seconds earlier. No order outside those batches was affected. Damage signatureTwo distinct patterns have been observed, both following bulk generation.
Pattern A: fields zeroed
Zeroed:
_product_id,_qty,_line_subtotal,_line_total,_line_taxSurvive:
order_item_name,_reduced_stock,_wc_cog_item_cost,_wc_cog_item_total_cost,_wcpdf_regular_price_line_tax_databecomes:a:2:{s:5:"total";a:0:{}s:8:"subtotal";a:0:{}}That is, empty arrays — not a rate ID with a zero value. A legitimately zero-priced line on the same order (a BOGO free gift) stores:
a:2:{s:5:"total";a:1:{i:1;s:1:"0";}s:8:"subtotal";a:1:{i:1;s:1:"0";}}The emptied tax structure plus the exact set of affected fields suggests a default-constructed
WC_Order_Item_Productbeing saved over an existing row, rather than a recalculation producing zeros.In one case (
order_item_id385202, order 144294) evenorder_item_namewas emptied.Pattern B —
_reduced_stockdeletedOrder 144256, also in the 09:04 batch, kept its product IDs and quantities but had
_reduced_stockdeleted from all 14 line items. ABEFORE DELETEtrigger captured the removals.The page I need help with: [log in to see the link]
You must be logged in to reply to this topic.