如何自定义WooCommerce查看订单页订单备注并修改系统自动生成备注
WooCommerce 自定义订单商品调整自动备注教程
实现思路
无需修改WooCommerce核心控制文件,通过官方提供的钩子挂载自定义逻辑即可实现需求,可避免后续WooCommerce版本更新覆盖修改内容。
完整实现代码
// 挂载订单商品编辑完成后触发的钩子 add_action( 'woocommerce_order_after_edit_items', 'custom_adjust_order_item_note', 10, 2 ); function custom_adjust_order_item_note( $order_id, $modified_items ) { $order = wc_get_order( $order_id ); $note = ''; // 统计删除商品及对应删除数量 $pre_edit_items = $order->get_meta( '_pre_edit_order_item_snapshot', true ); if ( ! empty( $pre_edit_items ) ) { foreach ( $pre_edit_items as $item_id => $item_info ) { if ( ! isset( $modified_items[ $item_id ] ) ) { $note .= sprintf( '已删除商品「%s」,删除数量:%d;', $item_info['name'], $item_info['qty'] ); } } } // 追加更新后的订单总金额 $new_total = wc_price( $order->get_total() ); $note .= sprintf( '商品调整完成,更新后订单总金额:%s', $new_total ); // 写入订单备注,第二个参数true代表仅后台可见,改为false则客户也可查看 if ( ! empty( $note ) ) { $order->add_order_note( $note, true ); $order->save(); } // 存储本次商品快照,供下次编辑对比使用 $current_snapshot = []; foreach ( $order->get_items() as $item_id => $item ) { $current_snapshot[ $item_id ] = [ 'name' => $item->get_name(), 'qty' => $item->get_quantity(), ]; } $order->update_meta_data( '_pre_edit_order_item_snapshot', $current_snapshot ); $order->save(); }
部署方式
- 将上述代码复制到站点当前使用主题的
functions.php文件末尾即可生效 - 也可以将代码封装为独立的自定义插件部署,兼容性更高
- 测试时可在后台打开任意订单,删除/添加商品后刷新页面即可看到生成的自定义备注
内容的提问来源于stack exchange,提问作者Mahmoud Qatamsh
相关产品推荐
相关产品推荐

