在 WooCommerce 中添加价格不含税的自定义订单元数据

Add custom order meta data with price exluding tax in WooCommerce

我正在尝试在 woocommerce_order_itemmeta table 中创建自定义 meta_key 供以后使用(单价不含税)。

我添加了以下代码,但我在结帐页面上一直收到错误消息,只显示带有“Internal Server Error”的红色标记。

有人知道哪里出了问题吗?

// Save custom data to order item meta data

add_action( 'woocommerce_add_order_item_meta', 'unit_price_order_itemmeta', 10, 3 );
function unit_price_order_itemmeta( $item_id, $values, $cart_item_key ) {

        $unit_price  =  wc_get_price_excluding_tax( $product );

        wc_add_order_item_meta( $item_id, '_unit_price', $unit_price , false );

}

在你的代码中你使用了 $product 而这在任何地方都没有指定。

注意:woocommerce_add_order_item_meta 挂钩是 deprecated since WooCommerce 3. Use woocommerce_checkout_create_order_line_item 而不是

所以替换:

// Save custom data to order item meta data
add_action( 'woocommerce_add_order_item_meta', 'unit_price_order_itemmeta', 10, 3 );
function unit_price_order_itemmeta( $item_id, $values, $cart_item_key ) {

    $unit_price  =  wc_get_price_excluding_tax( $product );

    wc_add_order_item_meta( $item_id, '_unit_price', $unit_price , false );

}

function action_woocommerce_checkout_create_order_line_item( $item, $cart_item_key, $values, $order ) {
    // The WC_Product instance Object
    $product = $item->get_product();
    
    $unit_price = wc_get_price_excluding_tax( $product );
        
    $item->update_meta_data( '_unit_price', $unit_price );
}
add_action('woocommerce_checkout_create_order_line_item', 'action_woocommerce_checkout_create_order_line_item', 10, 4 );