Ενεργοποίηση/Απενεργοποίηση τρόπων πληρωμής ανάλογα με τον τρόπο αποστολής

Δουλεύει με 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

και έκανα μερικές μετατροπές στον τελικό κώδικα που σας δίνω

Αφήστε ένα Σχόλιο

Η ηλ. διεύθυνση σας δεν δημοσιεύεται. Τα υποχρεωτικά πεδία σημειώνονται με *

Αυτός ο ιστότοπος χρησιμοποιεί το Akismet για να μειώσει τα ανεπιθύμητα σχόλια. Μάθετε πώς υφίστανται επεξεργασία τα δεδομένα των σχολίων σας.