В этом уроке я покажу, как при помощи хука 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). Хотели отключить другой метод оплаты, но не знаете, где найти его ярлык? Тут я подробно рассказываю об этом.Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.
Здравствуйте! Подскажите пожалуйста, а как вытащить количество из корзины товаров определенного класса доставки? Например в корзине 3 товара 1 класса доставки и 4 второго класса доставки, как получить цифру 3 ?
А то я нашел только или полностью количество товара в корзине или количество видов разного товара в корзине ...