Ενότητα 1 · 1.2
Πώς λειτουργεί το WooCommerce
Ενότητα 1: Πριν ξεκινήσετε · Χρόνος ανάγνωσης: 10 λεπτά
Στόχος μαθήματος: Μετά από αυτό το μάθημα μπορείτε να εξηγήσετε πώς λειτουργεί το WooCommerce μέσα στο WordPress και πού βρίσκονται τα προϊόντα, οι παραγγελίες, το καλάθι και οι προγραμματισμένες εργασίες.
Βασικές έννοιες: τύπος προϊόντος, τύπος άρθρου product, παραγγελίες (HPOS), σελίδες καταστήματος, συνεδρία και καλάθι, Store API, REST API, Action Scheduler, email συναλλαγών, επεκτάσεις
Ένα πρόσθετο που μετατρέπει τον ιστότοπό σας σε κατάστημα
Στο μάθημα για το WordPress (μάθημα 1.2 και 1.3) είδατε πώς δημιουργείται μια σελίδα: ο web server παραδίδει το αίτημα στην PHP, η PHP φορτώνει το WordPress, τα πρόσθετα και το θέμα, αντλεί δεδομένα από τη βάση δεδομένων και τα μετατρέπει σε HTML. Το WooCommerce εντάσσεται σε αυτή τη διαδικασία ως ένα μεγάλο πρόσθετο. Φέρνει μαζί του τέσσερα πράγματα:
- Στοιχεία: προϊόντα, παραγγελίες, πελάτες, συντελεστές φόρου, ζώνες αποστολής.
- Σελίδες: το κατάστημα, το καλάθι, το ταμείο και τον λογαριασμό μου.
- Διαδικασίες: ένα καλάθι ανά επισκέπτη, πληρωμές μέσω παρόχου πληρωμών, email, ενημέρωση αποθέματος, προγραμματισμένες εργασίες.
- Σημεία πρόσβασης για προγράμματα: τη Store API και τη REST API.
Όποιος γνωρίζει πού βρίσκονται αυτά τα μέρη, μπορεί αργότερα να εντοπίσει ένα σφάλμα πολύ πιο γρήγορα. Γι' αυτό τα εξετάζουμε τώρα ένα προς ένα.
Προϊόντα: ένας δικός τους τύπος άρθρου
Το WordPress γνωρίζει τύπους άρθρων: οι σελίδες και τα άρθρα είναι δύο από αυτούς (μάθημα WordPress 4.2). Το WooCommerce προσθέτει τον τύπο άρθρου product. Ένα προϊόν βρίσκεται λοιπόν, όπως και μια σελίδα, στον πίνακα των άρθρων, με τα επιπλέον στοιχεία του (τιμή, SKU, απόθεμα, βάρος) ως μεταδεδομένα. Οι κατηγορίες και οι ετικέτες των προϊόντων είναι ξεχωριστές ταξινομίες, ανεξάρτητες από εκείνες του ιστολογίου σας.
Κάθε προϊόν έχει έναν τύπο προϊόντος. Στον πυρήνα αυτοί είναι: απλό, ομαδοποιημένο, εξωτερικό (ένας σύνδεσμος προς άλλο κατάστημα) και μεταβλητό. Μπορείτε επιπλέον να ενεργοποιήσετε τις επιλογές εικονικό (τίποτα προς αποστολή) και με δυνατότητα λήψης (ένα αρχείο μετά την πληρωμή). Ένα μεταβλητό προϊόν έχει παραλλαγές, όπως μια τσαγιέρα σε τρία χρώματα· κάθε παραλλαγή είναι ξεχωριστό στοιχείο με δική της τιμή και απόθεμα. Η ενότητα 3 εμβαθύνει σε αυτό.
Παραγγελίες: δικοί τους πίνακες (HPOS)
Παλαιότερα το WooCommerce αποθήκευε και τις παραγγελίες ως άρθρα. Στα πολυσύχναστα καταστήματα αυτό γινόταν αργό, επειδή παραγγελίες και άρθρα ιστολογίου μοιράζονταν τον ίδιο μεγάλο πίνακα. Γι' αυτό ήρθε το HPOS (High-Performance Order Storage): παραγγελίες σε δικούς τους πίνακες, όπως wc_orders, wc_order_addresses και wc_orders_meta (με το πρόθεμα πινάκων του ιστότοπού σας μπροστά). Από το WooCommerce 8.2 (Οκτώβριος 2023) το HPOS είναι ενεργό σε κάθε νέα εγκατάσταση. Ένα παλαιότερο κατάστημα παραμένει στον παλιό τρόπο αποθήκευσης μέχρι να κάνετε εσείς τη μετάβαση στο WooCommerce > Ρυθμίσεις > Για προχωρημένους > Δυνατότητες.
Γιατί πρέπει να το γνωρίζετε αυτό; Για τρεις λόγους:
- Αντίγραφα ασφαλείας: οι παραγγελίες δεν βρίσκονται στα αρχεία σας αλλά στη βάση δεδομένων. Ένα αντίγραφο ασφαλείας χωρίς βάση δεδομένων είναι άχρηστο για ένα ηλεκτρονικό κατάστημα (μάθημα 6.2).
- Επεκτάσεις: μια παλαιότερη επέκταση που διαβάζει ακόμη τις παραγγελίες ως άρθρα δεν λειτουργεί σωστά με το HPOS. Το WooCommerce εμφανίζει προειδοποίηση στο πρόσθετο, αν αυτό δεν είναι συμβατό.
- Επαναφορά: αν επαναφέρετε ένα αντίγραφο ασφαλείας της χθεσινής ημέρας, χάνονται οι σημερινές παραγγελίες. Σε ένα ηλεκτρονικό κατάστημα αυτό είναι πολύ χειρότερο από ό,τι σε ένα ιστολόγιο (μάθημα 6.2).
Το καλάθι: διαφορετικό για κάθε επισκέπτη
Μια συνηθισμένη σελίδα είναι ίδια για κάθε επισκέπτη. Το καλάθι όχι. Μόλις ένας επισκέπτης προσθέσει κάτι στο καλάθι, το WooCommerce ξεκινά μια συνεδρία: ένα cookie (wp_woocommerce_session_ ακολουθούμενο από έναν κωδικό) στο πρόγραμμα περιήγησης και μια εγγραφή σε έναν πίνακα συνεδριών στη βάση δεδομένων. Έτσι το κατάστημα γνωρίζει στο επόμενο αίτημα ποιο καλάθι ανήκει σε αυτόν τον επισκέπτη.
Δύο συνέπειες που θα συναντήσετε αργότερα:
- Το καλάθι, το ταμείο και ο λογαριασμός μου δεν πρέπει ποτέ να καταλήγουν σε cache σελίδων, διαφορετικά ένας επισκέπτης βλέπει το καλάθι κάποιου άλλου. Το WooCommerce στέλνει από μόνο του σε αυτές τις σελίδες κεφαλίδες που απαγορεύουν την αποθήκευση σε cache (μάθημα 6.4).
- Ένα κατάστημα που ξεκινά συνεδρία για κάθε επισκέπτη, ακόμη και χωρίς καλάθι, καθιστά άχρηστη την cache σελίδων ολόκληρου του ιστότοπου. Πρόκειται για συχνό σφάλμα θεμάτων και επεκτάσεων.
Οι σελίδες του καταστήματος και τα μπλοκ
Κατά την εγκατάσταση το WooCommerce δημιουργεί τέσσερις σελίδες: Κατάστημα, Καλάθι, Ταμείο και Ο λογαριασμός μου. Από την έκδοση 8.3 (Νοέμβριος 2023) οι νέες εγκαταστάσεις χρησιμοποιούν για το καλάθι και το ταμείο μπλοκ· τα παλαιότερα καταστήματα χρησιμοποιούν συχνά ακόμη shortcodes. Και τα δύο λειτουργούν. Η διαφορά είναι σημαντική για τις επεκτάσεις: μια επέκταση που προσθέτει κάτι στο ταμείο πρέπει να υποστηρίζει την παραλλαγή που χρησιμοποιείτε εσείς. Το μάθημα 2.2 δείχνει πώς να το ελέγξετε.
Δύο σημεία πρόσβασης για προγράμματα: Store API και REST API
Το WooCommerce διαθέτει δύο προγραμματιζόμενα σημεία πρόσβασης, και η διαφορά τους είναι σημαντική για την ασφάλεια:
| Store API | REST API | |
|---|---|---|
| Διεύθυνση | /wp-json/wc/store/v1/... | /wp-json/wc/v3/... |
| Για ποιον | Το ίδιο το κατάστημα (τα μπλοκ στο πρόγραμμα περιήγησης) και άλλες βιτρίνες καταστήματος | Συνδέσεις: λογιστική, απόθεμα, εφαρμογές |
| Χρειάζεται κλειδί; | Όχι, δημόσια: ο καθένας μπορεί να διαβάσει προϊόντα και τιμές | Ναι, ένα κλειδί API με δικαιώματα ανάγνωσης ή εγγραφής |
| Τι περιέχει | Προϊόντα, τιμές, κατάσταση αποθέματος, το καλάθι του τρέχοντος επισκέπτη | Επιπλέον παραγγελίες, πελάτες, αναφορές |
Το ότι η Store API είναι δημόσια δεν αποτελεί διαρροή: είναι ακριβώς ό,τι βλέπει κάθε επισκέπτης στο κατάστημα, απλώς σε μορφή που μπορούν να διαβάσουν προγράμματα. Δοκιμάστε το με το δικό σας κατάστημα: ανοίξτε τη διεύθυνση https://shop.example.com/wp-json/wc/store/v1/products στο πρόγραμμα περιήγησής σας (με τη δική σας διεύθυνση) και θα δείτε τα προϊόντα σας σε μορφή JSON. Η REST API, αντίθετα, πρέπει να είναι κλειστή χωρίς κλειδί. Το μάθημα 2.4 ελέγχει και τις δύο.
Στο παρασκήνιο: Action Scheduler και email
Πολλές εργασίες σε ένα ηλεκτρονικό κατάστημα δεν γίνονται όσο περιμένει ο πελάτης, αλλά αργότερα. Το WooCommerce χρησιμοποιεί γι' αυτό τον Action Scheduler: μια ουρά προγραμματισμένων εργασιών, όπως η ακύρωση μιας απλήρωτης παραγγελίας μετά τον ορισμένο χρόνο, η αποστολή webhooks ή η ενημέρωση αναφορών. Την ουρά τη βλέπετε στο WooCommerce > Κατάσταση > Προγραμματισμένες ενέργειες. Αυτές οι εργασίες εκτελούνται μέσω του WP-Cron, το οποίο τρέχει μόνο όταν υπάρχουν επισκέπτες. Σε ένα ήσυχο κατάστημα μπορεί έτσι να μείνουν εργασίες σε εκκρεμότητα· το μάθημα 7.3 δείχνει πώς το λύνει ένα πραγματικό cron.
Επιπλέον, το WooCommerce στέλνει email συναλλαγών: ένα email σε εσάς για κάθε νέα παραγγελία, και email στον πελάτη κατά την παραλαβή, την αποστολή, την επιστροφή χρημάτων ή τη δημιουργία νέου λογαριασμού. Αν αυτά δεν φτάνουν, ο πελάτης νομίζει ότι κάτι πήγε στραβά. Το μάθημα 6.1 φροντίζει την παραδοσιμότητα.
Στην πράξη: έτσι φαίνεται στο WooCommerce
Στη διαχείριση του WordPress του Theehuis Example εμφανίζονται μετά την εγκατάσταση τρία νέα μενού: WooCommerce (παραγγελίες, πελάτες, ρυθμίσεις, κατάσταση), Προϊόντα και Αναλυτικά στοιχεία (στις πρόσφατες εκδόσεις μερικές φορές κάτω από το WooCommerce). Στο WooCommerce > Κατάσταση βρίσκετε το περιβάλλον του server, τους πίνακες της βάσης δεδομένων, τις προγραμματισμένες ενέργειες και τα αρχεία καταγραφής. Αυτή την οθόνη θα τη χρειάζεστε συχνά. Τα βήματα είναι ίδια σε κάθε πάροχο hosting, επειδή βρίσκονται μέσα στο ίδιο το WordPress.
Σύνοψη
- Το WooCommerce φέρνει μαζί του στοιχεία, σελίδες, διαδικασίες και δύο προγραμματιζόμενα σημεία πρόσβασης.
- Τα προϊόντα είναι ξεχωριστός τύπος άρθρου· οι παραγγελίες βρίσκονται στα νέα καταστήματα σε δικούς τους πίνακες (HPOS, προεπιλογή από την 8.2).
- Το καλάθι λειτουργεί με μια συνεδρία ανά επισκέπτη· γι' αυτό το καλάθι, το ταμείο και ο λογαριασμός μου δεν πρέπει να μπαίνουν στην cache.
- Η Store API είναι δημόσια και δείχνει ό,τι βλέπει κάθε επισκέπτης· η REST API πρέπει να είναι κλειστή χωρίς κλειδί.
- Οι προγραμματισμένες εργασίες εκτελούνται μέσω του Action Scheduler και του WP-Cron· τα email αποτελούν μέρος της διαδικασίας παραγγελίας.
Κουίζ
Άσκηση
Άσκηση A1.2: Λειτουργεί αυτός ο ιστότοπος με WooCommerce; Συμπληρώστε ένα domain, επιλέξτε ναι ή όχι και σημειώστε ποια απόδειξη είδατε (για παράδειγμα "generator" ή "wc/store/v1"). Το πρόγραμμα ανακτά την αρχική σελίδα, διαβάζει το ευρετήριο REST (/wp-json/, μόνο τη λίστα με τα namespaces) και ζητά τη διεύθυνση /wp-json/wc/store/v1/products?per_page=1. Αναγνωρίζει το WooCommerce από ένα meta generator με WooCommerce, το namespace wc/store/v1 στο ευρετήριο REST, μια Store API που λειτουργεί, αρχεία από το /wp-content/plugins/woocommerce/ ή την κλάση body woocommerce. Πράσινο: η επιλογή σας είναι σωστή και η απόδειξή σας εμφανίζεται στις κεφαλίδες, στην HTML, στο ευρετήριο REST ή στην απάντηση της Store API· τότε βλέπετε επίσης τον αριθμό των προϊόντων και το νόμισμα. Πορτοκαλί: η επιλογή σας είναι σωστή, αλλά δεν βρίσκουμε την απόδειξή σας. Κόκκινο: η επιλογή σας δεν είναι σωστή. Δοκιμάστε πρώτα στο δικό σας κατάστημα και έπειτα σε ένα κατάστημα που γνωρίζετε. Δεν προστίθεται τίποτα σε καλάθι και δεν αποστέλλεται τίποτα.
Περαιτέρω ανάγνωση
Όπου αναφέρονται βήματα σε πίνακα ελέγχου, ισχύουν για το WebOké· σε άλλους παρόχους η διαδικασία είναι παρόμοια.
- Δωρεάν μάθημα WordPress 1.2: Κάτω από το καπό: διακομιστής, PHP και βάση δεδομένων
- Δωρεάν μάθημα WordPress 1.3: Αρχεία, wp-config και η βάση δεδομένων
- Δωρεάν μάθημα WordPress 4.2: Σελίδες, άρθρα, κατηγορίες και ετικέτες
- High-Performance Order Storage (developer.woocommerce.com, στα Αγγλικά): https://developer.woocommerce.com/docs/features/orders/high-performance-order-storage/
- Store API (developer.woocommerce.com, στα Αγγλικά): https://developer.woocommerce.com/docs/apis/store-api/
- Action Scheduler (στα Αγγλικά): https://actionscheduler.org/
