Отключаем методы оплаты для определённых категорий товаров

У меня уже есть несколько различных уроков по включению и отключению методов оплаты в WooCommerce в зависимости от некоторых условий, например:

Сегодня рассмотрим ещё более частный случай – будем отключать методы оплаты, если среди товаров в корзине есть товары (хотя бы один) из определённой категории.

add_filter( 'woocommerce_available_payment_gateways', 'truemisha_gateway_by_category', 25 );
 
function truemisha_gateway_by_category( $available_gateways ) {
 
	// в админке лучше ничего не делать
	if ( is_admin() ) {
		return $available_gateways;
	}
 
	$gateway_slug = 'paypal'; // ярлык метода оплаты, в данном случае – палка
	$is_available = true; // включен или выключен? по умолчанию – включен
	$cat_ids = array( 5, 10 ); // ID категорий товаров, для которых отключаем
 
	// цикл для содержимого корзины
	foreach ( WC()->cart->get_cart_contents() as $key => $value ) {
		// получаем все категории данного товара из корзины
		if( $product_cats = get_the_terms( $value[ 'product_id' ], 'product_cat' ) ) {
			foreach ( $product_cats as $product_cat ) {        
				if ( in_array( $product_cat->term_id, $cat_ids ) ) {
					$is_available = false; // товар из заданной категории, отключаем метод оплаты
					break 2;
				}
			}
		}
	}
 
	// отключаем метод оплаты
	if ( false === $is_available ){
		unset( $available_gateways[ $gateway_slug ] );
	}
 
	return $available_gateways; // возвращаем результат
 
}
  • Документацию функции get_the_terms() можно найти тут.
  • Если на строчке 17 заменить значение аргумента функции product_cat на product_tag, то мы можем отключить метод оплаты, если товар отмечен определённым тегом.
  • О том, как узнать ID (ярлык) метода оплаты читайте здесь.

Миша

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

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

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

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

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