При повторной подписке добавьте простой продукт в подписку WooCommerce

Я использую плагин WooCommerce Subscriptions.

У меня есть продукт по подписке, который связан с простым продуктом WooCommerce с индивидуальной ценой в виде пакета для клиента.

Во время продления подписки я программно добавляю простой продукт в активную подписку.

У меня есть сценарий, в котором клиент отменяет подписку, а администратор одобряет отмену подписки.

В этом случае на странице подписки «Моя учетная запись» клиента отображается кнопка «Повторная подписка». При повторной подписке берется только последняя отмененная подписка на продукт подписки и осуществляется переход к оформлению заказа.

Можно ли как-нибудь добавить простые продукты во время повторной подписки?

Я попробовал приведенный ниже крючок, но он работает после создания новой подписки:

add_action('wcs_create_subscription', 'action_wcs_create_subscription', 10, 20)

Есть ли способ подключиться к процессу повторной подписки и добавить к оформлению заказа дополнительные простые товары?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете легко обнаружить повторную подписку в корзине.

В следующем коде вы определите простой идентификатор продукта, который будет добавлен при повторной подписке, и идентификатор продукта целевой подписки в корзине.

Код добавит ваш простой продукт в корзину, когда клиент повторно подпишется через «Подписки в моей учетной записи» (для подписки на конкретный продукт).

Код:

add_action( 'woocommerce_checkout_init', 'add_product_with_resubscription' );
function add_product_with_resubscription() {
    $cart = WC()->cart;

    $simple_product_id = 18; // Define the simple product ID to be added
    $subscr_product_id = 138; // Define the targeted product subscription ID
    $simple_is_in_cart = $is_resubscription = false; // Initializing

    // Loop through cart items
    foreach ( $cart->get_cart() as $item ) { 
        // Check for a specific resubscription
        if ( isset($item['subscription_resubscribe']) 
        && in_array($subscr_product_id, [$item['product_id'], $item['variation_id']]) ) {
            $is_resubscription = true;
        }
        // Check that the simple product is not yet in cart
        if ( $simple_product_id == $item['product_id'] ) {
            $simple_is_in_cart = true;
        }
    }

    // Add to cart the simple product and recalculate totals
    if ( $is_resubscription && !$simple_is_in_cart ) {
        $cart->add_to_cart($simple_product_id);
        $cart->calculate_totals();
    }
}

Код находится в файле function.php вашей дочерней темы (или в плагине). Протестировано и работает.

Другие вопросы по теме

Проблема с функцией добавления в корзину пользовательского WooCommerce Ajax
Как всегда показывать состояние запасов в продуктах WooCommerce
Неустранимая ошибка PHP: необнаруженная ошибка: класс «WC_Legacy_API» не найден
Перезаписать блоки адресов выставления счетов и доставки WooCommerce Checkout из плагина
Прокрутите до содержимого вкладки в пункте меню, щелкните элемент вкладки в отдельных продуктах WooCommerce
Как снова запустить синхронизацию WooCommerce HPOS для ранее синхронизированных заказов?
Хук фильтра woocommerce_product_get_weight не работает с вариантами продукта
Добавьте в корзину несколько вариантов с помощью JQuery и Ajax в WooCommerce
Статус индивидуального заказа: электронное письмо не отправлено, несмотря на регистрацию действия по электронной почте
Пользовательское поле заказа, добавленное при оформлении заказа, теряется после синхронизации WooCommerce с HPOS