【问题标题】:WooCommerce add order admin hook for recalculate buttonWooCommerce 为重新计算按钮添加订单管理挂钩
【发布时间】:2019-11-04 04:26:24
【问题描述】:

我希望在实际提交订单之前在管理员中循环查看添加到订单中的所有产品。到目前为止,我发现的唯一 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 Hook 但这只会单独访问每个项目,而我需要遍历摘要中的每个项目。

【问题讨论】:

    标签: php wordpress woocommerce hook


    【解决方案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;
        }
    

    【讨论】:

    • 您好,感谢您的回答,这些都无法访问添加到订单中的产品或项目。嘿只是返回订单的状态,例如货币、运费、付款方式等...
    • 当您单击“重新计算”按钮时,您想做某事,对吧?如果是,则此操作附带唯一的钩子。这些都包含一个 Order 对象,你可以用它做任何事情。如果没有,请告诉我你想挂在哪里的确切实例和行动的座右铭。
    • 不要忘记添加这个if( did_action( '[FILTER_NAME]' ) >= 2 ) return; 以避免无限循环。
    猜你喜欢
    • 2018-04-29
    • 2021-04-21
    • 2013-11-02
    • 1970-01-01
    • 2017-06-10
    • 2020-08-17
    • 2018-01-12
    • 2021-04-15
    • 1970-01-01
    相关资源
    最近更新 更多