以编程方式将产品添加到 WooCommerce 订阅中,更改其名称和价格
Add a product programmatically to WooCommerce subscription changing its name & price
我正在尝试以编程方式将现有产品添加到订单中,但仅针对此订单更改名称和价格。
我可以使用以下方法轻松添加现有产品:
$subscription->add_product( get_product( '969' ), 1);
如何为它设置自定义名称和价格?
如果我可以设置,那么我知道我可以运行以下内容来重新计算总数:
$subscription->calculate_totals();
要更改添加到订阅的产品价格和名称,请尝试以下操作:
$product = wc_get_product('969');
$quantity = 1;
$new_price = 100; // (Excluding taxes).
$new_name = 'New name';
// Add the product
$item_id = $subscription->add_product( $product, $quantity );
// Get the instance of WC_Order_Item_Product Object from item Id
$item = $subscription->get_item( $item_id, false ); // Get the
// Change name and price
$item->set_name( $new_name ); // set new name
$item->set_subtotal( $new_price * $item_quantity ); // set new price
// Calculate item taxes
$item->calculate_taxes( array(
'country' => $subscription->get_billing_country() ? $subscription->get_billing_country() : $subscription->get_shipping_country(),
'state' => $subscription->get_billing_state() ? $subscription->get_billing_state() : $subscription->get_shipping_state(),
'postcode' => $subscription->get_billing_postcode() ? $subscription->get_billing_postcode() : $subscription->get_shipping_postcode(),
'city' => $subscription->get_billing_city() ? $subscription->get_billing_city() : $subscription->get_shipping_city(),
) );
$item->save(); // Save item
$subscription->calculate_totals(); // Refresh subscription totals and save.
应该可以。
相关:
我正在尝试以编程方式将现有产品添加到订单中,但仅针对此订单更改名称和价格。
我可以使用以下方法轻松添加现有产品:
$subscription->add_product( get_product( '969' ), 1);
如何为它设置自定义名称和价格?
如果我可以设置,那么我知道我可以运行以下内容来重新计算总数:
$subscription->calculate_totals();
要更改添加到订阅的产品价格和名称,请尝试以下操作:
$product = wc_get_product('969');
$quantity = 1;
$new_price = 100; // (Excluding taxes).
$new_name = 'New name';
// Add the product
$item_id = $subscription->add_product( $product, $quantity );
// Get the instance of WC_Order_Item_Product Object from item Id
$item = $subscription->get_item( $item_id, false ); // Get the
// Change name and price
$item->set_name( $new_name ); // set new name
$item->set_subtotal( $new_price * $item_quantity ); // set new price
// Calculate item taxes
$item->calculate_taxes( array(
'country' => $subscription->get_billing_country() ? $subscription->get_billing_country() : $subscription->get_shipping_country(),
'state' => $subscription->get_billing_state() ? $subscription->get_billing_state() : $subscription->get_shipping_state(),
'postcode' => $subscription->get_billing_postcode() ? $subscription->get_billing_postcode() : $subscription->get_shipping_postcode(),
'city' => $subscription->get_billing_city() ? $subscription->get_billing_city() : $subscription->get_shipping_city(),
) );
$item->save(); // Save item
$subscription->calculate_totals(); // Refresh subscription totals and save.
应该可以。
相关: