У меня на блоге уже есть урок, в котором я подробно рассказал о способах добавления товара в корзину программно, через код. Я решил на этом не останавливаться, и вот, перед вами урок про программное применение купона.
Прежде, чем мы перейдём непосредственно к примерам, добавление купона происходит при помощи метода корзины add_discount()
, в который и передаётся название купона.
WC()->cart->add_discount( 'friday000' ); // применение купона "friday000"
Всё, теперь погнали к примерам.
В обоих примерах я планирую применять купон во время экшен-хука woocommerce_before_cart
. Код вставляем в functions.php
темы.
add_action( 'woocommerce_before_cart', 'truemisha_coupon_if_product_in_cart' ); function truemisha_coupon_if_product_in_cart() { $coupon_code = 'friday000'; $product_id = 2; // ID товара, наличие которого в корзине проверяем // если товар в корзине if( WC()->cart->find_product_in_cart( WC()->cart->generate_cart_id( $product_id ) ) ) { // проверяем, что купон не добавлен, иначе будет много уведомлений if( ! WC()->cart->has_discount( $coupon_code ) ) { WC()->cart->add_discount( $coupon_code ); wc_print_notices(); // удалить строку, если уведомление не нужно } } else{ // удаляем купон, если товар не в корзине WC()->cart->remove_coupon( $coupon_code ); } }
woocommerce_before_checkout_form
.add_action( 'woocommerce_before_cart', 'truemisha_coupon_minimum_1000' ); function truemisha_coupon_minimum_1000() { $coupon_code = 'friday000'; $minimum_amount = 1000; // задаём минимальную сумму заказа if( WC()->cart->subtotal > $minimum_amount ) { // больше тысячи // не забываем проверку, добавлен ли уже купон if( ! WC()->cart->has_discount( $coupon_code ) ) { WC()->cart->add_discount( $coupon_code ); wc_print_notices(); } } else{ WC()->cart->remove_coupon( $coupon_code ); } }
Если вы будете использовать этот код, то полагаю вам пригодится урок, в котором я показывал, как добавить в корзину сообщение, что пользователя ждут бонусы, стоит только ему заказать на определённую сумму.
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.