为了账号安全,请及时绑定邮箱和手机立即绑定

将所有特定订单商品自定义字段的总和保存为WooCommerce中的订单元数据

将所有特定订单商品自定义字段的总和保存为WooCommerce中的订单元数据

PHP
慕桂英3389331 2021-05-06 14:19:08
下面我刚才的问题“ 保存WooCommerce订单项目自定义字段和作为一个新的元数据”,当一个订单时,一些订单项目自定义元数据quantity,assemblycost以及calculated_field (哪个值quantityX assemblycost)保存。如何将所有订单项calculated_field值的总和保存为自定义订单元数据?例如,示例订单如下所示:Product A:assemblycost: 10quantity: 2calculated_field: 20Product B:assemblycost: 15quantity: 2calculated_field: 30Product C: no assemblycost, quanity or calculated_field - custom fields present. Product D: assemblycost: 30quantity: 2calculated_field: 60我想为order创建一个新的自定义字段sum_calculated_fields,并将其设置为等于该订单中的总和calculated_fields,因此在上面的示例中它等于:20 + 30 + 60 = 110。
查看完整描述

1 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

这是calculated_fields汇总所有订单项自定义字段并将该总和保存为自定义订单元数据的方法:


add_action( 'woocommerce_checkout_create_order', 'action_checkout_create_order_callback', 10, 2 );

function action_checkout_create_order_callback( $order, $data ) {

    $calculated_fields_sum = 0; // Initializing


    // Loop Through order items

    foreach ( $order->get_items() as $item ) {

        if( $value = $item->get_meta('calculated_field') ) {

            $calculated_fields_sum += $value;

        }

    }

    // Update order meta data

    if( $calculated_fields_sum > 0 ) {

        $order->update_meta_data( 'calculated_fields_sum', $calculated_fields_sum );

    }

}

代码进入您的活动子主题(或活动主题)的function.php文件中。它应该工作。


查看完整回答
反对 回复 2021-05-21
  • 1 回答
  • 0 关注
  • 152 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信