以编程方式将产品添加到 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.

应该可以。

相关: