woocommerce payment gateways 제거하기

woocommerce_available_payment_gateways  filter 를 이용해서 결제 방법을 제어할수 있다 아래 코드는 특정 장바구니 상품이 특정 카테고리가 포함된 경우 ‘iamport_card’ 라는 payment gateway 만 사용하도록 하는 방법이다.
function woo_gateways_filter( $available_gateways ){
       if ( ! is_checkout() ) return $available_gateways;
       $cart_items = WC()->cart->get_cart();
       if ( count($cart_items) == 0 )	return; //장바구니가 비어있으면 패스

       //상품이 선물하기 카테고리에 포함되어 있으면...
       $gift_term = 2030;
       $is_gift_term = false;

       foreach ($cart_items as $key => $item) {
                     $product = wc_get_product($item["product_id"]);
                     $product_ids[] = $product->get_id();

                     foreach ($product_ids as $product_id) {
                            $terms = wp_get_post_terms($product_id, 'product_cat', array('fields' => 'ids'));
                            if( in_array($gift_term, $terms)){
                                   $is_gift_term = true;
                            }
                     }
       }

       if( $is_gift_term ){
              foreach ($available_gateways as $key => $value) {
                     if( $key !=  'iamport_card'){
                                   unset($available_gateways[$key] );
                     }
              }
       }

       return $available_gateways;
}
add_action('woocommerce_available_payment_gateways', 'woo_gateways_filter');
Code language: PHP (php)