Δουλεύει με Woocommerce 2.6.12
Το παρακάτω snippet πρέπει να το προσθέσετε στο function.php του child theme σας.
Στο Woocommerce μετά την έκδοση 2,6 στο shipping έχουμε τα εξής Shipping Methods: local_pickup, flat_rate, free_shipping
Όμως επειδή παράγονται πολλαπλές instance πρέπει δίπλα από κάθε μέθοδο αποστολής να βάλουμε και το id της. πχ free_shipping:8
. Το id μπορούμε να το βρούμε από το url που έχει το link για την επεξεργασία της κάθε μεθόδου.
function my_custom_available_payment_gateways( $gateways ) {
$chosen_shipping_rates = WC()->session->get( 'chosen_shipping_methods' );
// ex: Όταν θέλουμε να απενεργοποιήσουμε το Paypal όταν υπάρχει η επιλογή free_shipping
if ( in_array( 'local_pickup:3', $chosen_shipping_rates ) ) :
unset( $gateways['cod'] );
endif;
// ex: Απενεργοποίηση COD για το flat rate με id=6
if ( in_array( 'flat_rate:6', $chosen_shipping_rates ) ) :
unset( $gateways['cod'] );
endif;
// Απενεργοποίηση Τραπεζικής Κατάθεσης & Paypal για το flat rate με id=9
if ( in_array( 'flat_rate:9', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['bacs'] );
unset( $gateways['paypal'] );
endif;
return $gateways;
}
add_filter( 'woocommerce_available_payment_gateways', 'my_custom_available_payment_gateways' );
Βρήκα αρκετές πληροφορίες από εδώ:
Enable/Disable payment gateways for specific shipping methods
και έκανα μερικές μετατροπές στον τελικό κώδικα που σας δίνω