Настройка бесплатной пробной версии программно для элемента корзины в подписках WooCommerce - PullRequest
0 голосов
/ 18 ноября 2018

Я пытаюсь установить бесплатный пробный период для элемента корзины в WooCommerce во время запроса добавления в корзину AJAX.Код, кажется, работает, когда в корзине есть один продукт подписки, но когда в корзине есть два или более одинаковых продукта подписки, бесплатная пробная версия также применяется ко всем этим продуктам, даже если код предназначен только дляизменение данных корзины для одного из продуктов.Код, который я использую ниже.Также $ 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;

}

1 Ответ

0 голосов
/ 18 ноября 2018

Нашел решение. wcs_set_objects_property () принимает 4-й аргумент, чтобы не сохранять значение в базе данных, а хранить его в памяти. Затем вызывайте функцию каждый раз, когда рассчитываются итоги корзины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...