WooCommerce添加订单管理员挂钩进行重新计算按钮

时间:2019-06-21 10:15:09

标签: php wordpress woocommerce hook

我希望在实际提交订单之前,在管理员中遍历添加到订单中的所有产品。到目前为止,我发现的唯一WooCommerce挂钩仅允许您单独访问产品项。

我一直在寻找一个钩子,该钩子会在用户单击“重新计算”按钮时触发,但实际上,当用户添加产品,税金,运输方式等时,它可能会触发。我只需要遍历添加到到目前为止。

目前我正在使用woocommerce_admin_order_item_values钩子,但这是一个自包含的循环,因此不允许我将所有的'$ item ['product_id']'加在一起。

function action_woocommerce_admin_order_item_values( $null, $item, $absint ) { 
$item_ids = array($item['product_id']);
}
add_action( 'woocommerce_admin_order_item_values', 'action_woocommerce_admin_order_item_values', 10, 3 );

您还可以使用- woocommerce_before_order_itemmeta钩,但这只能单独访问每个项目,而我需要遍历摘要中的每个项目。

1 个答案:

答案 0 :(得分:1)

单击重新计算按钮时,WooCommerce提供了许多挂钩。我在这里列出了这些挂钩,取决于您根据您的要求进行选择。

$ order = WC_Order对象

    add_action("woocommerce_order_before_calculate_taxes", "custom_order_before_calculate_taxes", 10, 2);
    function custom_order_before_calculate_taxes($args, $order) {
        // Do something
    }

    add_action("woocommerce_order_item_after_calculate_taxes", "custom_order_item_after_calculate_taxes", 10, 2);
    function custom_order_item_after_calculate_taxes($order, $calculate_tax_for) {
       // Do something
    }

    add_action("woocommerce_before_order_object_save", "custom_before_order_object_save", 10, 2);
    function custom_before_order_object_save($order, $data_store) {
      // Do something
    }

    add_action( 'woocommerce_order_before_calculate_totals', "custom_order_before_calculate_totals", 10, 2);
    function custom_order_before_calculate_totals($and_taxes, $order ) {
      // Do something
    }
    add_action( 'woocommerce_order_after_calculate_totals', "custom_order_after_calculate_totals", 10, 2);
    function custom_order_after_calculate_totals($and_taxes, $order) {
      //Do something
    }

    add_filter("woocommerce_order_is_vat_exempt", function(){
       return $boolean;
    });

    add_filter("woocommerce_order_get_total", "custom_order_get_total", 10, 2);
    function custom_order_get_total($value, $order) {
      //do somethig
      return $value;
    }