Программно изменить элементы корзины Woocommerce с виртуальных на физические

#php #wordpress #woocommerce #virtual #cart

#php #wordpress #woocommerce #виртуальный #Корзина

Вопрос:

Мне нужно программно изменить элемент корзины с «виртуального» на «физический» в какой calculate_cart_item_totals -то момент в Woocommerce. Возможно ли это?

Ответ №1:

Вы можете изменить свойства элемента корзины (продукта) только с помощью woocommerce_before_calculate_totals hook. Теперь, чтобы изменить элемент корзины с «виртуального» на «физический», вы будете использовать следующий WC_Product метод set_virtual() :

 add_action( 'woocommerce_before_calculate_totals', 'custom_cart_item_data_replacement', 16 );
function custom_cart_item_data_replacement( $cart ) {

    foreach ( $cart->get_cart() as $cart_item ) {
        // Change virtual cart item to "physical"
        if( $cart_item['data']->get_virtual() ) {
            $cart_item['data']->set_virtual(false);
        }
    }
}

 

Код вводится functions.php файл активной дочерней темы (или активной темы). Протестировано и работает.