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)