【发布时间】:2019-04-20 21:40:35
【问题描述】:
我正在尝试在添加到购物车 AJAX 请求期间在 WooCommerce 中设置购物车项目的免费试用期。当购物车中有一个订阅产品时,该代码似乎可以工作,但当购物车中有两个或多个相同的订阅产品时,免费试用也适用于所有这些产品,即使该代码只是特定的更改其中一种产品的购物车数据。我正在使用的代码如下。另外 $job->get_free_trial_length() 肯定会返回正确的值。任何帮助将不胜感激,因为我已经为此苦苦挣扎了一段时间!谢谢。
更新
在更改购物车项目的免费试用期时,它似乎也更新了订阅产品的免费试用期,这就是其他产品也发生变化的原因。所以我的问题是,可以在购物车项目级别而不是产品级别进行免费试用吗?
/**
* Add the subscription package to the user's cart.
*
* @param int $job_id
* @param int $variation_id
* @return string
*/
function add_package_to_cart( $job_id, $variation_id ) {
$job = fcrm_get_job( $job_id );
$product_id = $job->get_linked_subscription_product_id();
$quantity = 1;
$cart_item_data = array(
'job_id' => $job_id
);
// Add to cart
$key = WC()->cart->add_to_cart( $product_id, $quantity, $variation_id, array(), $cart_item_data );
// Set the free trial period
wcs_set_objects_property( WC()->cart->cart_contents[ $key ]['data'], 'subscription_trial_length', $job->get_free_trial_length() );
return $key;
}
【问题讨论】:
标签: php wordpress woocommerce cart subscription