Обновление корзины товаров для подписки в Woocommerce, не работающей с WCSATT - PullRequest
0 голосов
/ 27 февраля 2020

Я создал целевую страницу для подписки на определенный 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();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...