在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
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);