Loading...
12
136

Πως να προσθέσω έξοδα αντικαταβολής στο woocommerce;

16/05/2021
3 λεπτά

Αν δε θέλετε να διαβάσετε όλο το κείμενο μπορείτε να
κατεβάσετε απευθείας το plugin από το WordPress.

https://wordpress.org/plugins/simple-cod-fee-for-woocommerce/

Συχνά μας παρουσιάζεται η ανάγκη να προσθέσουμε κάποιο έξτρα κόστος σε κάποιους τρόπους πληρωμής (συνήθως στην αντικαταβολή αλλά μπορεί να τύχει σε οποιαδήποτε μέθοδο πληρωμής). Εαν δε θέλουμε κάτι πολύπλοκο καλό θα ήταν να γίνει χωρίς τη χρήση plugin. Ο τρόπος είναι ο παρακάτω

add_action( 'woocommerce_cart_calculate_fees', function() {
	$cod_fee = 3;
    $chosen_gateway = WC()->session->get( 'chosen_payment_method' );

    if ( $chosen_gateway == 'cod' ) 
    {
    	$chosen_shipping_methods = wc_get_chosen_shipping_method_ids();

    	if ( !in_array('local_pickup', $chosen_shipping_methods) )
    	{    		
    		WC()->cart->add_fee( __('Cash on Delivery', 'woocommerce'), $cod_fee );
    	}
   }
} );

Ας δούμε όμως τι γράφουμε και γιατί το γράφουμε

Σειρά 1: Αρχικά το hook που πρέπει να χρησιμοποιήσουμε είναι το woocommerce_cart_calculate_fees

Σειρά 2: Εδώ απλά ορίζουμε το ποσό που θέλουμε να χρεώνουμε

Σειρά 3: Αποθηκεύουμε στη μεταβλητή $chosen_gateway την επιλεγμένη μέθοδο πληρωμής

Σειρά 5: Με ένα απλό if ελέγχουμε αν ο χρήστης έχει επιλέξει Αντικαταβολή (cod). Αντίστοιχα αν θέλουμε να προσθέσουμε έξτρα κόστος σε άλλη μέθοδο πληρωμής κάνουμε εδώ τους αντίστοιχους ελέγχους. Οι default τρόποι πληρωμής και τα keys τους είναι

  • Αντικαταβολή (cod)
  • Τραπεζική μεταφορά (bacs)
  • Επιταγή (cheque)
  • Paypal (paypal)

Σειρά 7: Συνήθως όμως δε θέλουμε το έξτρα κόστος να χρεώνεται αν ο χρήστης επιλέξει Παραλαβή απο το κατάστημα.
Η function wc_get_chosen_shipping_method_ids() επιστρέφει σε array τους ενεργούς τρόπους αποστολής (σε πιο πολύπλοκα συστήματα οπου μία παραγγελία μπορεί να σπάει σε περισσότερους απο έναν τρόπους αποστολής εδώ μπορεί να έχουμε πάνω απο μία τιμή να επιστρέφεται στο array, ωστόσο στο 99% των περιπτώσεων θα επιστραφεί μόνο μία τιμή).

Σειρά 9: Εδώ ελέγχουμε αν ο επιλεγμένος τρόπος αποστολής ΔΕΝ είναι παραλαβή απο το κατάστημα (το συγκεκριμένο id είναι το local_pickup)

Σειρά 11: Αφού ο χρήστης ΔΕΝ έχει επιλέξει παραλαβή από το κατάστημα τότε προσθέτουμε στο καλάθι ένα έξτρα κόστος με την εντολή WC()->cart->add_fee οπου η πρώτη παράμετρος είναι το κείμενο που θα εμφανίζεται και η δεύτερη παράμετρος είναι το έξτρα ποσό που θα χρεώνεται.

Αν δε θέλετε να διαβάσετε όλο το κείμενο μπορείτε να
κατεβάσετε απευθείας το plugin από το WordPress.

https://wordpress.org/plugins/simple-cod-fee-for-woocommerce/

Σχόλια

Πώς μπορούμε να ρυθμίσουμε το κόστος αντικαταβολής ανά κούριερ; π.χ. Ελτα αντικαταβολή 2,00, Acs αντικαταβολή 1,50 κτλ.

Απάντηση

Σε ενδιαφέρει με κώδικά ή σαν επιλογή μέσα στο plugin;

Απάντηση

ένα απτα δύο αρκεί να δουλεύει

Απάντηση

Θες να τσεκάρεις το plugin; Έβγαλα μία νέα έκδοση σήμερα με αυτό το feature και να μου πεις αν σου δουλεύει;

Απάντηση

Γεια σας. Το plugin το δοκίμασα για απλή χρήση είναι μια χαρά. Αλλά αυτό που ήθελα να κάνω εγώ (και το έκανα με άλλο τρόπο) ήταν όταν ο πελάτης έχει δωρεάν μεταφορικά, η αντικαταβολή να μην είναι δωρεάν και επίσης ο πελάτης όταν επιλέγει το κουριερ η τιμή αντικαταβολής να είναι ανά κουριερ. Συνήθως όταν έχει δωρεάν μεταφορικά μηδενίζει και την αντικαταβολή ή εισάγεις άλλη τιμή για αντικαταβολή.

Απάντηση

Αν θέλουμε με κώδικα να προσθέσουμε 2 διαφορετικά ποσά πως θα γίνει;

Δηλαδή αν θέλω π.χ. για την Γενική να χρεώνω αντικαταβολή 1€ αλλά για την ACS να χρεώνω 2€ πως μπορώ να το κάνω;

Απάντηση

Καλησπέρα,
σε ενδιαφέρει να γίνει αμιγώς με κώδικα; Γιατί το παραπάνω plugin κάνει ακριβώς αυτό, μπορείς να βάλεις στην αντικαταβολή διαφορετικό κόστος ανά μέθοδο αποστολής

Απάντηση

Πως μπορώ να το κάνω αν το ποσό είναι πάνω από πχ 60€ να μηδενίζεται το κόστος αντικαταβολής.

Απάντηση

Νομίζω σχετικά εύκολα μπορεί να γίνει αυτό. Πάνω από το $cart->add_fee κάνεις έναν έξτρα έλεγχο if ( $cart->subtotal <= 60 ) οπότε αν το subtotal (κόστος προϊόντων + ΦΠΑ χωρίς να μετράει μεταφορικά) είναι μεγαλύτερο από 60 το fee δε θα προστεθεί ποτέ στο καλάθι

Απάντηση

Θέλετε να σχολιάσετε;

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

Ας συνεργαστούμε
Επικοινωνήστε μαζί μας