• Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Решено Добавление подарка на 5-тый заказ?

#NVZ

Новичок
Здравствуйте, весь интернет перерыл. Мне нужно добавить подарок (товар из моего магазина) на каждый 5-ты заказ. Я даже приближенно не могу найти ничего подобного по функционалу. Везде просто подарки или 1+1 или на общую цену корзины, либо на количество, но не на количество заказов :(
Возможно это не плагин, а хук..
 

#NVZ

Новичок
берете этот плагин https://srd.wordpress.org/plugins/first-order-discount/
и переписываете под себя вместо первого заказа ставите равное деление на 5 без остатка, ну и ненужные опции плагина просто удаляете.
Там говорится о скидке после первого заказа. Хорошо я сделаю что бы на 5 заказ была скидка, но мне надо что бы подарочный товар добавлялся, не скидка 100 процентона определённый товар, а одна позиция подарком..
 

artemkomarov

Специалист
Местный
определённый товар, а одна позиция подарком..
как программно добавлять товар есть оф. документация
и куча примеров в поиске

PHP:
if ( ! is_admin() ) {
        $product_id = 64;
        $found = false;
        //check if product already in cart
        if ( sizeof( WC()->cart->get_cart() ) > 0 ) {
            foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
                $_product = $values['data'];
                if ( $_product->id == $product_id )
                    $found = true;
            }
            // if product not found, add it
            if ( ! $found )
                WC()->cart->add_to_cart( $product_id );
        } else {
            // if no products in cart, add it
            WC()->cart->add_to_cart( $product_id );
        }
    }
 

#NVZ

Новичок
как программно добавлять товар есть оф. документация
и куча примеров в поиске

PHP:
if ( ! is_admin() ) {
        $product_id = 64;
        $found = false;
        //check if product already in cart
        if ( sizeof( WC()->cart->get_cart() ) > 0 ) {
            foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
                $_product = $values['data'];
                if ( $_product->id == $product_id )
                    $found = true;
            }
            // if product not found, add it
            if ( ! $found )
                WC()->cart->add_to_cart( $product_id );
        } else {
            // if no products in cart, add it
            WC()->cart->add_to_cart( $product_id );
        }
    }
Всё сделал, чудесно. Последний вопрос, Вы знаете как можно данном случае назначить цену "0" , у добавленного товара?
 

#NVZ

Новичок
Я тоже сначала этот вариант загуглил. Он работает отлично, если в корзине подразумевается только 1 товар подарочный, но ведь могут 3 штуки купить, из которых только одна должна быть подарочной, мысль у меня была такая

$currPrice = $value['data']->price;
$currQuant = $value["quantity"];
$custom_price = ($currPrice*$currQuant) - $currPrice;
$value['data']->price = $custom_price;

Но а в таком случае итоговая стоимость этого товара, умножается ещё раз на количество товара и получается что на расчёт идёт $custom_price*количество...

Судя по всему за это отвечает
$value['line_total'];
$value['line_subtotal'];

Но их изменение не к чему не приводит, сделал вот такое решение. Не знаю правильно или нет, но вроде работает)

$currPrice = $value['data']->price;
$currQuant = $value["quantity"];
$totalPrice = $currPrice * $currQuant;
$salePrice = $totalPrice - $currPrice;
$saledPrice = $salePrice/$currQuant;
$value['data']->price = $saledPrice;
 
Последнее редактирование:

artemkomarov

Специалист
Местный
Но их изменение не к чему не приводит, сделал вот такое решение. Не знаю правильно или нет, но вроде работает)
Гораздо проще сделать это через одинарный цикл. В таком случае сколько бы товаров не было добавлено одно типа только к первому в массиве будет применена нулевая цена.

А вообще проще создать отдельный подарочный товар и ограничить к нему доступ чтобы его нельзя было купить. И его добавлять как подарок.
 
Сверху Снизу