woocommerce: Как отключить способ оплаты для определенных товаров по id?
Как отключить способ оплаты для определенных товаров по id?
на просторах интернета нашел способ отключения для категорий, но нужно еще и для конкретных товаров
add_filter( 'woocommerce_available_payment_gateways', 'payment_gateway_by_category', 25 ); function payment_gateway_by_category( $available_gateways ) { // в админке лучше ничего не делать if ( is_admin() ) { return $available_gateways; } $gateway_slug = 'wc_tinkoff_kvk'; // ярлык метода оплаты $is_available = true; // включен или выключен? по умолчанию – включен $cat_ids = array( 45, 47 ); // 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; // возвращаем результат }
Какой интересный вопрос. По сути надо проверить каждый товар в корзине, ориентировочно вот так используя тот же фильтр
woocommerce_available_payment_gateways()