如何在WooCommerce_Checkout_Create_Order_Line_Item挂钩中获取产品差异价格

时间:2019-06-06 作者:WPler

在hook woocommerce\\u checkout\\u create\\u order\\u line\\u item中,我想在checkout页面中更改多个数量的项目元,现在我需要变动价格来计算。

function wpler_add_quantities_to_order_items($item, $cart_item_key, $values, $order) {
    setlocale(LC_MONETARY, \'de_DE\');
    //$product = $values[\'data\']; // Variation Product-Object
    //$product = $item->get_product();
    $product = wc_get_product($item->get_variation_id());
    $price1 = $product->get_rpice(); //$product->get_variation_regular_price(\'min\');
    $price2 = $product->get_sale_price(); //$product->get_variation_sale_price(\'min\');
    $r = $order->get_billing_postcode();

    $rabatt = !empty($r)&&is_numeric($r)&&$r>0 ? doubleval($r) : 0;
    $ep1 = calcPrices($price1, $price2, intval($values[\'quantity\']), $rabatt);
    $ep2 = calcPrices($price1, $price2, intval($values[\'quantity10\']), $rabatt);
    $ep3 = calcPrices($price1, $price2, intval($values[\'quantity20\']), $rabatt);
    $item->add_meta_data("Preis für {$values[\'quantity\']} Stück", money_format(\'%.2n\', $ep1));
    $item->add_meta_data("Preis für {$values[\'quantity10\']} Stück", money_format(\'%.2n\', $ep2));
    $item->add_meta_data("Preis für {$values[\'quantity20\']} Stück", money_format(\'%.2n\', $ep3));
}
add_filter(\'woocommerce_checkout_create_order_line_item\', \'wpler_add_quantities_to_order_items\', 10, 4);
正常价格是第一件的正常价格。销售价格是剩余数量件的价格。

示例:变更条款,正常价格=5.00,销售价格=1.00

订单为50 x变更物品

所以,我在计算((49 x 1)+5) = 54.00

但我们也希望显示500和5000个数量的不同数量建议,这些建议应显示在结帐中。

我对上述函数的问题是,我需要变量产品的常规价格和销售价格。我怎样才能得到这个?

谢谢Stefan

1 个回复
SO网友:WPler

好的,我找到了解决方案:

在对象$项中,我发现:

$item->legacy_values[\'variation_id\']

这给了我身份证$item->legacy_values[] 数组我有两个价格,我现在取:

function wpler_add_quantities_to_order_items($item, $cart_item_key, $values, $order) {
    setlocale(LC_MONETARY, \'de_DE\');
    $price1 = doubleval($item->legacy_values[\'price1\']);
    $price2 = doubleval($item->legacy_values[\'price2\']);
    $r = $order->get_billing_postcode();

    $rabatt = !empty($r)&&is_numeric($r)&&$r>0 ? doubleval($r) : 0;
    $ep1 = calcPrices($price1, $price2, intval($values[\'quantity\']), $rabatt);
    $ep2 = calcPrices($price1, $price2, intval($values[\'quantity10\']), $rabatt);
    $ep3 = calcPrices($price1, $price2, intval($values[\'quantity20\']), $rabatt);
    $item->add_meta_data("Preis für {$values[\'quantity\']} Stück", money_format(\'%.2n\', $ep1));
    $item->add_meta_data("Preis für {$values[\'quantity10\']} Stück", money_format(\'%.2n\', $ep2));
    $item->add_meta_data("Preis für {$values[\'quantity20\']} Stück", money_format(\'%.2n\', $ep3));
}
add_filter(\'woocommerce_checkout_create_order_line_item\', \'wpler_add_quantities_to_order_items\', 10, 4);

相关推荐