Кто-нибудь знает, как скрыть способ оплаты (в данном случае наложенным платежом) со страницы оформления заказа, если в корзине есть только определенная категория (327) товаров?
С кодом ниже, если в корзине есть товары из этой категории (327), то способ оплаты cod будет скрыт. Однако цель состоит в том, чтобы сделать это только в том случае, если в корзине нет других товаров:
add_filter( 'woocommerce_available_payment_gateways', 'wp_unset_gateway_by_category' );
function wp_unset_gateway_by_category( $available_gateways ) {
global $woocommerce;
$unset = false;
$category_ids = array(327); // The ID of the category for which the gateway will be removed.
foreach ( $woocommerce->cart->cart_contents as $key => $values ) {
$terms = get_the_terms( $values['product_id'], 'product_cat' );
foreach ( $terms as $term ) {
if ( in_array( $term->term_id, $category_ids ) ) {
$unset = true;
break;
}
}
}
if ( $unset == true ) unset( $available_gateways['cod'] ); // One of the hardcoded Woocommerce standard types of payment gateways - paypal, cod, bacs, cheque
return $available_gateways;
}