Включаем или отключаем методы оплаты в зависимости от количества товаров в корзине

В этом уроке я покажу, как при помощи хука WooCommerce woocommerce_available_payment_gateways и объекта корзины WC()->cart отключать способы оплаты в зависимости от того, сколько товаров находится в корзине.

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

Также хочу порекомендовать вам два своих видеокурса по WooCommerce – про создание темы и про создание плагина.

А вот готовый код:

add_filter( 'woocommerce_available_payment_gateways', 'truemisha_gateway_by_cart_count', 25 );
 
function truemisha_gateway_by_cart_count( $available_gateways ) {
 
	// в админке лучше ничего не делать
	if ( is_admin() ) {
		return $available_gateways;
	}
 
	// если товаров меньше 5
	if( WC()->cart->get_cart_contents_count() < 5 ) {
		// проверяем, что метод оплаты уже не отключен
		if( isset( $available_gateways[ 'cod' ] ) ) {
			unset( $available_gateways[ 'cod' ] ); // отключаем
		}
	}
 
	return $available_gateways; // возвращаем результат
 
}
  • Обратите внимание, что метод WC()->cart->get_cart_contents_count(), считает количество любых товаров, даже одинаковых, то есть, если пользователь добавил 5 единиц одного и того же товара, то метод оплаты «Наличными при получении» также будет доступен. Если вам нужно посчитать именно количество разных товаров, то используйте count( WC()->cart->get_cart() ).
  • Если вы не уверены относительно того, куда вставлять код, то рекомендую этот урок.
  • cod – это ярлык метода оплаты «Наличными при получении» (Cash on Delivery). Хотели отключить другой метод оплаты, но не знаете, где найти его ярлык? Тут я подробно рассказываю об этом.

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

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

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

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