Issue: Tùy biến hiển thị phương thức thanh toán dựa trên lựa chọn phương thức giao hàng của khách hàng

Ví dụ:
+ Khi khách hàng lựa chọn phương thức giao hàng COD -giao hàng thu tiền => trang Checkout sẽ ẩn phương thức thanh toán “chuyển khoản”
+ Khi đơn hàng đạt mức free ship & khách hàng lựa chọn phương thức giao hàng miễn phí => trang Checkout sẽ ẩn phương thức thanh toán “COD”

Giải pháp:

+ Can thiệp vào hook “woocommerce_available_payment_gateways”
Code cụ thể:

//hide payment method based on shipping method selected<br />
add_filter( 'woocommerce_available_payment_gateways', 'payment_gateways_based_on_chosen_shipping_method' );<br />
function payment_gateways_based_on_chosen_shipping_method( $available_gateways ) {<br />
// Not in backend (admin)<br />
if( is_admin() )<br />
return $available_gateways;</p>
<p>// Lay phuong thuc ship duoc KH chon<br />
$chosen_shipping_methods = (array) WC()-&gt;session-&gt;get( 'chosen_shipping_methods' );</p>
<p>if ( in_array( 'free_shipping:6', $chosen_shipping_methods ) ) //free_shipping:6 - phuong thuc ship duoc chon<br />
{<br />
unset( $available_gateways['nganluong'] ); //nganluong - phuong thuc thanh toan bi loai bo<br />
unset( $available_gateways['cod'] );//COD - phuong thuc thanh toan bi loai bo<br />
}<br />
elseif ( in_array( 'ghtk_shipping_method', $chosen_shipping_methods ) )//ghtk_shipping_method - phuong thuc giao hang qua GHTK - plugin Le Van Toan<br />
{<br />
unset( $available_gateways['bacs'] );<br />
}<br />
return $available_gateways;</p>
<p>}

Cách lấy value của phương thức vận chuyển & phương thức thanh toán: 

Từ browser console, lấy giá trị trường value của phương thức tương ứng.

Tuy bien phuong thuc thanh toan Woocommerce dua tren phuong thuc van chuyen

Các bạn có thể tùy biến theo nhu cầu.

Reference:

1. Show hide payment methods based on selected shipping method in Woocommerce

2. Hide shipping and payment methods in WooCommerce