Добавляем сбор при использовании определённых методов оплаты

В этом уроке покажу вам, как в принципе использовать функционал сборов в WooCommerce и в качестве примера мы добавим дополнительную комиссию (сбор), если покупатель на вашем сайте выберет палку в качестве оплаты (я слышал там зверский процент? 😁)

И ребята, если вы ещё не знаете про мой видеокурс по WooCommerce, то рекомендую посмотреть его по ссылке 🚀

Начнём с того, что если вы добавите этот лёгкий код в ваш functions.php текущей темы:

add_action( 'woocommerce_cart_calculate_fees', 'truemisha_add_fee', 25 );
 
function truemisha_add_fee() {
 
	WC()->cart->add_fee( 'Заплати!', 50 );
 
}

То ко всем заказам вашего интернет-магазина на странице оформления заказа будет автоматически добавляться дополнительная оплата в 50 единиц в валюте магазина.

Вот скриншот со страницы оформления заказа:

Добавляем дополнительные сборы к заказу в WooCommerce

А, я же вам обещал, что этот сбор будет появляться только при выборе определённого метода оплаты. Тогда добавляем лишь одно условие:

add_action( 'woocommerce_cart_calculate_fees', 'truemisha_add_fee_paypal', 25 );
 
function truemisha_add_fee_paypal() {
 
	// определяем текущий платёжный шлюз, если это – PayPal, то...
	if( 'paypal' == WC()->session->get( 'chosen_payment_method' ) ) {
		WC()->cart->add_fee( 'Заплати!', 50 );
	}
 
}

Если хотите сделать это для какого-то другого платёжного шлюза, то о том, как узнать ID метода оплаты, я говорил тут.

Ну и неплохо бы триггерить обновление страницы чекаута, когда покупатель изменяет метод оплаты (кликает по радио-кнопке), это можно сделать всего лишь тремя строчками jQuery-кода:

$( 'form.checkout' ).on( 'change', 'input[name^="payment_method"]', function() {
	$('body').trigger( 'update_checkout' );
});

Ну, вы знаете, куда его вставлять. Да ведь?!

Ладно, уговорили 😁

add_action( 'wp_footer', function() {
 
	echo '<script>jQuery( function( $ ) { СЮДА } );</script>';
 
} );

Ну и результат:

Дополнительная комиссия в WooCommerce при оплате PayPal

Миша

В последние годы я долго не знал, что мне делать с сайтом misha.blog, ведь он практически не приносит никакого профита, но недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.

Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.

Комментарии — 6

  • Владислав 1 июля 2020 #

    Норм))

    Я тут тоже woocommerce начал пилить, ты как не любитель плагинов как делаешь wishlist?

    • Миша 2 июля 2020 #

      Один раз пилил вишлист на куках, но теоретически, если есть хороший плагин для этого, то вай нот.

  • Bender 24 июля 2020 #

    А не подскажите, как сделать доп. сбор с проверкой способа доставки? =)

    К примеру, есть способ оплаты Наличными и доступен он для Самовывоза и Курьера. Хотелось бы делать доп. сбор при оплате Наличными для доставки Курьером, а при Самовывозе при оплате Наличными оставлять обычную стоимость.

    Заранее спасибо.

    • Миша 25 июля 2020 #

      Вам должен помочь этот урок, по крайней мере вы там сможете найти нужное вам условие.

  • Yellow 1 августа 2020 #

    Спасибо за решение! А можно сделать то же самое, но чтобы была комиссия не фиксированная, а в виде процента от суммы корзины?

    • Миша 2 августа 2020 #

      Пожалуйста!

      Используйте WC()->cart->subtotal (сумма товаров в корзине) для расчёта процента, например $fee = WC()->cart->subtotal * 0.2.

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, если же код – меньше одной строчки, то можно и в <code></code>.