- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的 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 文件。经过测试并有效。
关于php - 从取消的 WooCommerce 订单中减少产品总销售额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62007213/
我正在使用 Chart.js 创建图表。我在数据库中存储了一些日期和销售额。在这里,我使用 ajax 请求从数据库中选取记录,并通过将数据划分为两个不同的数组 date["2017-12-18","2
我正在尝试创建一个销售报告,用户可以在其中查看每天、每周和每月的销售额。 这是我的 table : CREATE TABLE IF NOT EXISTS `sales_act` ( `id`
我有一张包含 customer_number、week 和 sales 的表。我需要检查每个客户是否连续 12 周没有销售,并创建一个 0/1 的标志。 我可以检查过去 12 周或特定时间范围,但
我尝试了一些方法,到目前为止,这是唯一没有抛出错误的方法,但结果不会在我的页面上回显,所以我不太确定发生了什么。 $query = "SELECT SUM(sales.total) AS sales_
我是一名优秀的程序员,十分优秀!