我正在WooCommerce商店的产品表中使用get_total_sales()
WC_Product方法显示总销售额。
但是,该数字在用户取消订单后不会更新,它会不断增加销售。
任何人都可以向我展示如何更改此get_total_sales公式,以便能够删除总销售额中已取消的订单号?
是的,当在WooCommerce 3+中取消付款订单(来自处理或完整状态)时,相关产品的总销售额不会减少。
有关信息,付费
订单包括“处理中”和“已完成”订单状态。以下内容将减少客户,商店经理或管理员取消付款订单时的产品总销售额:
add_action( 'woocommerce_order_status_changed', 'update_product_total_sales_on_cancelled_orders', 10, 4 ); function update_product_total_sales_on_cancelled_orders( $order_id, $old_status, $new_status, $order ){ if ( in_array( $old_status, array('processing', 'completed') ) && 'cancelled' === $new_status && ! $order->get_meta('_order_is_canceled') ) { // Loop through order items foreach ( $order->get_items() as $item ) { // Get the WC_product object (and for product variation, the parent variable product) $product = $item->get_variation_id() > 0 ? wc_get_product( $item->get_product_id() ) : $item->get_product(); $total_sales = (int) $product->get_total_sales(); // get product total sales $item_quantity = (int) $item->get_quantity(); // Get order item quantity $product->set_total_sales( $total_sales - $item_quantity ); // Decrease product total sales $product->save(); // save to database } $order->update_meta_data('_order_is_canceled', '1'); // Flag the order as been cancelled to avoid repetitions $order->save(); // save to database } }
代码进入您的活动子主题(或活动主题)的functions.php文件中。经过测试和工作。