Loading...
12
141

Πως να προσθέσω έξοδα αντικαταβολής στο 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 δε θα προστεθεί ποτέ στο καλάθι

Απάντηση

Καλησπέρα σας, θέλουμε αν γίνεται μετά απο ένα ποσό ή συγκεκριμένο βάρος να μην υπάρχει η δυνατότητα αντικαταβολής .

Απάντηση

Καλησπέρα,
να απενεργοποιεί γενικά την αντικαταβολή ή το έξτρα κόστος;

Απάντηση

Καλησπέρα,

Θέλω να χρησιμοποιήσω το συγκεκριμένο plugin για να ορίσω διαφορετικό κόστος αντικαταβολής στις δυό μεταφορικές εταιρείες που χρησιμοποιούμε. Τις μεταφορικές αυτές τις έχουμε περασμένες στο σύστημα σαν weight based shipping. Και όταν χρησιμοποιώ το plugin και ενεργοποιώ το “διαφορετικά κόστη ανά μέθοδο αποστολής” δεν μου το εμφανίζει. Πως μπορώ να βρω μία λύση πάνω σε αυτό;

Απάντηση

Για το weight based shipping χρησιμοποιείτε κάποιο συγκεκριμένο plugin; Η αλήθεια είναι πως στο συγκεκριμένο plugin δεν υπάρχει υποστήριξη για κάποιο τέτοιο plugin, ίσως θα μπορούσα να το προσθέσω σε κάποια επόμενη έκδοση αλλά προς το παρόν δεν είναι στα άμεσα σχέδια.

Αν μου λέγατε ποιο plugin χρησιμοποιείτε θα μπορούσα να το δω για το μέλλον

Απάντηση

Δουλεύει άψογα. Ευχαριστώ.

Απάντηση

Γράψτε απάντηση στο Barom Ακύρωση απάντησης

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

83 Pixel. creative studio
Get Quote - EL