Я создал целевую страницу для подписки на определенный c продукт или несколько продуктов одновременно.
Проблема заключается в том, что я добавляю в корзину продукт и пытаюсь обновить его как продукт подписки , он обновляется, но каким-то образом он снова обновляется как одноразовый продукт. Я пытался обновить содержимое корзины продукта, установив {'wcsatt_data': {'active_subscription_theme': '1_month'}}, но этого недостаточно.
Это функция, которая выполняется, когда вы хотите добавить товар / товар в корзину:
add_action('wp_ajax_woocommerce_ajax_add_to_cart', 'woocommerce_ajax_add_to_cart');
add_action('wp_ajax_nopriv_woocommerce_ajax_add_to_cart', 'woocommerce_ajax_add_to_cart');
function woocommerce_ajax_add_to_cart() {
foreach ($_POST['products'] as $key => $value) {
$product_id = apply_filters('woocommerce_add_to_cart_product_id', absint($value['id']));
if(isset($value['size_id'])) {
$variation_id = apply_filters('woocommerce_add_to_cart_product_id', absint($value['size_id']));
} else {
$variation_id = 0;
}
$variation = array();
$posted_subscription_scheme_key = '1_month';
$quantity = absint($value['units']);
$passed_validation = apply_filters('woocommerce_add_to_cart_validation', true, $product_id, $quantity);
$product_status = get_post_status($product_id);
if ($passed_validation && 'publish' === $product_status) {
$args = array(
'product_id' => $product_id,
'variation_id' => $variation_id,
'quantity' => $quantity,
'variation' => $variation
);
$cart_item_key[] = WC()->cart->add_to_cart( $product_id, $quantity, $variation_id);
} else {
echo 'error';
}
}
foreach($cart_item_key as $value) {
$cart_item = WC()->cart->get_cart_item($value);
$cart_item['wcsatt_data'] = array(
'active_subscription_scheme' => $posted_subscription_scheme_key,
);
WCS_ATT_Cart::apply_subscription_scheme($cart_item);
}
WC()->cart->calculate_totals();
wp_die();
}