Μετάβαση στο περιεχόμενο

Ρυθμίσεις cookies

Επιλέξτε ανά κατηγορία ποια cookies επιτρέπετε. Μπορείτε να αλλάξετε την επιλογή σας οποιαδήποτε στιγμή μέσω των Ρυθμίσεων cookies στο κάτω μέρος κάθε σελίδας. Δήλωση απορρήτου

Απαραίτητα

Πάντα ενεργά

Χρειάζονται για τη σύνδεση, για να διατηρείται το καλάθι σας και για να θυμόμαστε τις επιλογές σας. Είναι πάντα ενεργά.

Ποια cookies;
  • weboke_sessie, weboke_klant, weboke_remember: η συνεδρία σας και η παραμονή σε σύνδεση
  • weboke_basket: το καλάθι σας
  • wkBtwIncl: εμφάνιση τιμών με ή χωρίς ΦΠΑ
  • wok_cookies: η επιλογή σας για τα cookies, 12 μήνες

Μετρούν ποια διαφήμιση οδηγεί σε επίσκεψη ή παραγγελία, ώστε να μην πληρώνουμε για διαφημίσεις που δεν αποδίδουν.

Ποια cookies;
  • Google Ads μέσω Google Tag Manager (_gcl_au, _gcl_aw), έως 90 ημέρες
  • OpenAI Ads, διαφημίσεις στο ChatGPT
  • wok_aff: μέσω ποιου συνεργάτη ήρθατε σε εμάς (πρόγραμμα συνεργατών), 60 ημέρες

4,6

Χώρα και γλώσσα

Κάθε χώρα έχει τη δική της ιστοσελίδα, με τιμές και ΦΠΑ της χώρας αυτής.

Προβολή

Τι εμφανίζει δημόσια το κατάστημά σας

Ενότητα 2: Εγκατάσταση και ρύθμιση · Χρόνος ανάγνωσης: 10 λεπτά

Στόχος μαθήματος: Μετά από αυτό το μάθημα μπορείτε να εξηγήσετε τι είναι το Store API και το REST API του WooCommerce, ποια δεδομένα πρέπει να είναι δημόσια και ποια όχι, και πώς χρησιμοποιείτε με ασφάλεια κλειδιά API και webhooks.

Βασικές έννοιες: API, REST API του WordPress, Store API (wc/store/v1), REST API του WooCommerce (wc/v3), JSON, δημόσιο και προστατευμένο, κλειδί API, δικαιώματα ανάγνωσης και εγγραφής, ελάχιστα δικαιώματα, webhook, μυστικό κλειδί ενός webhook, X-WP-Total

Ένα κατάστημα με δύο πόρτες

Ένας επισκέπτης βλέπει το κατάστημά σας ως ιστοσελίδες. Το κατάστημά σας όμως έχει και «πόρτες» για προγράμματα: διευθύνσεις όπου ένα πρόγραμμα μπορεί να ζητήσει ή να στείλει δεδομένα, χωρίς τη μορφοποίηση μιας σελίδας. Μια τέτοια πόρτα ονομάζεται API (application programming interface). Το WordPress έχει μία στη διαδρομή /wp-json/, το REST API. Το μάθημα 7.3 της σειράς μαθημάτων για το WordPress έδειξε ότι εκεί μπορείτε, για παράδειγμα, να ζητήσετε ονόματα χρηστών, αν δεν προστατεύσετε τίποτα.

Το WooCommerce προσθέτει δύο δικά του API, με πολύ διαφορετικό σκοπό:

Store APIREST API του WooCommerce
Διεύθυνση/wp-json/wc/store/v1/.../wp-json/wc/v3/...
Για ποιονΤο πρόγραμμα περιήγησης ενός επισκέπτη (τα μπλοκ για το καλάθι και την ολοκλήρωση αγοράς, μάθημα 2.2)Άλλα προγράμματα: λογιστική, απόθεμα, μια εφαρμογή, μια σύνδεση με μια πλατφόρμα αγορών
Χρειάζεται κλειδίΌχι, είναι δημόσιοΝαι, ένα κλειδί API ενός διαχειριστή (ή ένας συνδεδεμένος χρήστης με δικαιώματα)
Τι περιέχειΠροϊόντα, τιμές, κατάσταση αποθέματος, κατηγορίες, αξιολογήσεις· το καλάθι και την παραγγελία του ίδιου του επισκέπτηΤα πάντα: παραγγελίες όλων, πελάτες, κουπόνια, ρυθμίσεις, αναφορές

Το Store API είναι λοιπόν η είσοδος της βιτρίνας: ό,τι εμφανίζεται στο κατάστημά σας σε μια σελίδα προϊόντος, υπάρχει και εκεί, μόνο ως δεδομένα. Το REST API του WooCommerce είναι η πίσω πόρτα της αποθήκης: πρέπει να είναι κλειδωμένη.

Το Store API: τι μπορεί να ζητήσει ένας επισκέπτης (και οποιοσδήποτε)

Ανοίξτε στο πρόγραμμα περιήγησής σας:

https://shop.example.com/wp-json/wc/store/v1/products

Λαμβάνετε μια λίστα σε JSON, μια μορφή κειμένου για δεδομένα. Για κάθε προϊόν βλέπετε μεταξύ άλλων το όνομα, το slug, τον τύπο (απλό, μεταβλητό), τη διεύθυνση της σελίδας προϊόντος (permalink), τον κωδικό SKU, τις τιμές, τις εικόνες, τις κατηγορίες, αν είναι διαθέσιμο σε απόθεμα και αν μπορεί να αγοραστεί. Στις κεφαλίδες της απάντησης υπάρχει η X-WP-Total: ο αριθμός των προϊόντων που δείχνει το κατάστημα στους επισκέπτες.

Μερικά πράγματα που καλό είναι να γνωρίζετε:

  • Οι τιμές δίνονται σε λεπτά. Μια τσαγιέρα των € 34,95 εμφανίζεται ως "price": "3495" με "currency_minor_unit": 2. Διαιρείτε με το 100. Αν πρόκειται για την τιμή με ή χωρίς ΦΠΑ, εξαρτάται από τη ρύθμισή σας στο «Εμφάνιση τιμών στο κατάστημα» (μάθημα 4.1). Αυτή την ιδιότητα τη χρησιμοποιούμε στην άσκηση του μαθήματος 4.1.
  • Μόνο ό,τι είναι ορατό. Τα προϊόντα που είναι πρόχειρα, ιδιωτικά ή κρυφά στον κατάλογο δεν τα μετρά το Store API. Γι' αυτό η X-WP-Total μπορεί να είναι μικρότερη από τον αριθμό στη διαχείρισή σας.
  • Ανάγνωση επιτρέπεται σε όλους, εγγραφή όχι τόσο απλά. Η προσθήκη στο καλάθι ή η ολοκλήρωση αγοράς μέσω του Store API είναι δυνατή μόνο με έναν κωδικό μίας χρήσης (nonce) από τη σελίδα, και μόνο για το καλάθι του συγκεκριμένου επισκέπτη.

Είναι πρόβλημα που αυτά είναι δημόσια; Όχι: είναι τα ίδια δεδομένα που εμφανίζονται στις σελίδες προϊόντων σας. Ένας ανταγωνιστής που θέλει να παρακολουθεί τις τιμές σας μπορεί να το κάνει και με τις κανονικές σελίδες. Καλό είναι όμως να έχετε υπόψη: ό,τι βάζετε σε ένα πεδίο προϊόντος μπορεί να καταλήξει στο Store API. Μη βάζετε ποτέ τιμές αγοράς, ονόματα προμηθευτών ή εσωτερικές σημειώσεις στη σύντομη ή στην αναλυτική περιγραφή «επειδή το θέμα ούτως ή άλλως δεν εμφανίζει αυτό το πεδίο».

Μην κλείνετε επίσης το Store API. Τα μπλοκ για το καλάθι και την ολοκλήρωση αγοράς το χρειάζονται (μάθημα 2.2). Πρόσθετα ασφαλείας που «απενεργοποιούν το REST API για τους επισκέπτες» χαλούν γι' αυτόν τον λόγο μερικές φορές την ολοκλήρωση αγοράς. Αν θέλετε να περιορίσετε το REST API, εξαιρέστε τότε το Store API.

Κατάχρηση του Store API υπάρχει, αλλά από την πλευρά της εγγραφής: επιτιθέμενοι που με κλεμμένους αριθμούς καρτών δοκιμάζουν χιλιάδες μικρές παραγγελίες. Αυτό ονομάζεται card testing· σε αυτό αναφέρεται το μάθημα 6.3.

Το REST API του WooCommerce: πάντα πίσω από ένα κλειδί

Ανοίξτε τώρα, χωρίς να είστε συνδεδεμένοι:

https://shop.example.com/wp-json/wc/v3/orders

Η σωστή απάντηση είναι ένα μήνυμα σφάλματος με κατάσταση 401 (μη συνδεδεμένος) και έναν κωδικό όπως woocommerce_rest_cannot_view. Το κατάστημά σας λέει: «αυτό δεν επιτρέπεται να το δείτε». Έτσι πρέπει. Αν εδώ λάβετε μια λίστα με παραγγελίες, τότε κάτι πάει σοβαρά στραβά: ένα πρόσθετο που ανοίγει δικαιώματα, προσαρμοσμένος κώδικας στο θέμα ή ένα κλειδί που βρίσκεται σε μια δημόσια διεύθυνση. Τότε έχετε πιθανή παραβίαση δεδομένων (σειρά μαθημάτων για το WordPress, μάθημα 7.5, και βάση γνώσεων 6749).

Τα προγράμματα που χρειάζονται πρόσβαση στις παραγγελίες σας λαμβάνουν ένα κλειδί API. Το δημιουργείτε στο WooCommerce > Ρυθμίσεις > Για προχωρημένους > REST API (Advanced > REST API). Ένα κλειδί αποτελείται από δύο μέρη (ένα consumer key και ένα consumer secret) και ανήκει σε έναν χρήστη του WordPress. Επιλέγετε τα δικαιώματα:

  • Ανάγνωση: το πρόγραμμα μπορεί να ζητά δεδομένα·
  • Εγγραφή: το πρόγραμμα μπορεί να δημιουργεί και να τροποποιεί δεδομένα·
  • Ανάγνωση/Εγγραφή: και τα δύο.

Κανόνες που ακολουθείτε πάντα:

  1. Ελάχιστα δικαιώματα. Μια λογιστική σύνδεση που μόνο ανακτά παραγγελίες παίρνει μόνο ανάγνωση. Μια σύνδεση αποθέματος που ενημερώνει το απόθεμα χρειάζεται εγγραφή, ένα εργαλείο αναφορών όμως όχι.
  2. Ένα κλειδί ανά σύνδεση, με σαφή περιγραφή («Λογιστική, μόνο ανάγνωση, 2026»). Αν μια σύνδεση σταματήσει, ανακαλείτε μόνο αυτό το κλειδί.
  3. Συνδέστε το κλειδί με έναν χρήστη με κατάλληλα δικαιώματα. Ένα κλειδί διαχειριστή μπορεί να κάνει ό,τι μπορεί ένας διαχειριστής. Προτιμήστε να δημιουργήσετε ξεχωριστό χρήστη με τον ρόλο Διαχειριστής καταστήματος (μάθημα 6.2).
  4. Φυλάξτε το μυστικό μισό με ασφάλεια. Το βλέπετε μία φορά κατά τη δημιουργία. Ανήκει στις ρυθμίσεις του προγράμματος ή σε έναν διαχειριστή κωδικών πρόσβασης, όχι σε ένα email, σε ένα κοινόχρηστο έγγραφο ή σε ένα δημόσιο αποθετήριο κώδικα.
  5. Κάντε εκκαθάριση. Στο REST API βλέπετε για κάθε κλειδί πότε χρησιμοποιήθηκε τελευταία φορά. Ένα κλειδί που δεν έχει χρησιμοποιηθεί για μήνες, το ανακαλείτε.

Webhooks: το κατάστημά σας καλεί ένα άλλο πρόγραμμα

Ένα API περιμένει μέχρι να ρωτήσει κάποιος. Ένα webhook λειτουργεί αντίστροφα: σε ένα συμβάν στο κατάστημά σας (μια νέα παραγγελία, ένα τροποποιημένο προϊόν) το WooCommerce στέλνει από μόνο του ένα μήνυμα σε μια διεύθυνση που ορίζετε εσείς. Έτσι το πρόγραμμα αποστολών σας μαθαίνει αμέσως ότι υπάρχει παραγγελία, χωρίς να ρωτά κάθε λεπτό. Τα ρυθμίζετε στο WooCommerce > Ρυθμίσεις > Για προχωρημένους > Webhooks.

Τρία πράγματα που πρέπει να προσέξετε:

  • Το μήνυμα περιέχει δεδομένα προσωπικού χαρακτήρα. Ένα webhook για νέα παραγγελία στέλνει μαζί όνομα, διεύθυνση και παραγγελθέντα προϊόντα. Στείλτε τα μόνο σε διεύθυνση μέσω https και σε έναν φορέα που αναφέρεται στην πολιτική απορρήτου σας και στο αρχείο δραστηριοτήτων επεξεργασίας (μάθημα 5.5).
  • Το μυστικό κλειδί. Σε ένα webhook συμπληρώνετε ένα μυστικό κλειδί. Με αυτό το πρόγραμμα που λαμβάνει το μήνυμα μπορεί να ελέγξει ότι προέρχεται πράγματι από το κατάστημά σας και όχι από κάποιον που μάντεψε τη διεύθυνση. Μην το αφήνετε κενό και μοιραστείτε το μόνο με τον παραλήπτη.
  • Αποτυχημένη παράδοση. Αν η διεύθυνση παραλαβής δεν είναι προσβάσιμη για κάποιο διάστημα, το WooCommerce μπορεί να απενεργοποιήσει το webhook μετά από επανειλημμένα σφάλματα. Μετά από μια διακοπή, ελέγξτε στα Webhooks αν είναι ακόμη ενεργά.

Μην το συγχέετε με το webhook του παρόχου πληρωμών σας (μάθημα 4.4). Εκείνο λειτουργεί αντίστροφα: ο πάροχος ενημερώνει το κατάστημά σας ότι μια πληρωμή ολοκληρώθηκε.

Στην πράξη: έτσι φαίνεται στο WooCommerce

Σε άλλους παρόχους hosting λειτουργεί με τον ίδιο τρόπο· πρόκειται για στοιχεία του ίδιου του WooCommerce.

  1. Ανοίξτε σε ένα ιδιωτικό παράθυρο τη διαδρομή /wp-json/wc/store/v1/products στο (δοκιμαστικό) κατάστημά σας. Βρείτε ένα προϊόν και μετατρέψτε την τιμή.
  2. Ανοίξτε στο ίδιο ιδιωτικό παράθυρο τη διαδρομή /wp-json/wc/v3/orders. Πρέπει να δείτε κατάσταση 401.
  3. Μεταβείτε στο WooCommerce > Ρυθμίσεις > Για προχωρημένους > REST API. Δείτε ποια κλειδιά υπάρχουν, σε ποιον χρήστη ανήκουν και με ποια δικαιώματα. Ανακαλέστε κλειδιά που δεν αναγνωρίζετε (πλέον).
  4. Δείτε στα Webhooks ποια webhooks υπάρχουν και σε ποια διεύθυνση στέλνουν.
  5. Αν έχετε ένα πρόσθετο ασφαλείας που περιορίζει το REST API, ελέγξτε ότι το Store API εξαιρείται.

Σύνοψη

  • Το Store API (wc/store/v1) είναι δημόσιο και περιέχει ό,τι εμφανίζεται και στις σελίδες προϊόντων σας· τα μπλοκ για το καλάθι και την ολοκλήρωση αγοράς το χρειάζονται.
  • Μη βάζετε εσωτερικά δεδομένα σε πεδία προϊόντων: μπορεί να γίνουν ορατά μέσω του Store API.
  • Το REST API του WooCommerce (wc/v3) πρέπει χωρίς κλειδί να επιστρέφει 401· μια λίστα με παραγγελίες χωρίς κλειδί είναι πιθανή παραβίαση δεδομένων.
  • Κλειδιά API: ελάχιστα δικαιώματα, ένα ανά σύνδεση, σε κατάλληλο χρήστη, φυλαγμένα μυστικά, ανάκληση όσων δεν χρησιμοποιούνται.
  • Τα webhooks στέλνουν δεδομένα προσωπικού χαρακτήρα σε άλλο πρόγραμμα: μόνο μέσω https, με μυστικό κλειδί, σε φορέα από το αρχείο δραστηριοτήτων επεξεργασίας σας.

Κουίζ

1. Ποια δεδομένα πρέπει να είναι δημόσια μέσω του Store API;



2. Ανοίγετε χωρίς σύνδεση τη διαδρομή /wp-json/wc/v3/orders και λαμβάνετε μια λίστα με παραγγελίες. Τι σημαίνει αυτό;



3. Ένα λογιστικό πρόγραμμα χρειάζεται μόνο να ανακτά παραγγελίες. Ποιο κλειδί API δημιουργείτε;



4. Ένα πρόσθετο ασφαλείας κλείνει ολόκληρο το REST API για τους επισκέπτες. Οι πελάτες δεν μπορούν πλέον να ολοκληρώσουν αγορά. Γιατί;



5. Γιατί συμπληρώνετε ένα μυστικό κλειδί σε ένα webhook;



Άσκηση

Άσκηση A2.4: Τι εμφανίζει δημόσια το κατάστημά σας; Συμπληρώστε τη διεύθυνση του (δοκιμαστικού) καταστήματός σας και τον αριθμό των προϊόντων που είναι ορατά στο κατάστημά σας. Το πρόγραμμα κάνει τρία αιτήματα, χωρίς cookies και χωρίς κλειδί, μόνο ανάγνωση:

  1. /wp-json/wc/store/v1/products?per_page=1 (το Store API, μέσω της διεύθυνσης REST που δηλώνει ο ίδιος ο ιστότοπός σας)·
  2. /wp-json/wc/v3/orders?per_page=1·
  3. /wp-json/wc/v3/customers?per_page=1.

Άσκηση A2.4: Τι εμφανίζει δημόσια το κατάστημά σας;



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

Σωστό είναι: το Store API απαντά με κατάσταση 200 και μια λίστα JSON· η κεφαλίδα X-WP-Total είναι ίση με τον αριθμό που συμπληρώσατε· τα orders και customers επιστρέφουν 401, 403 ή 404.

Πορτοκαλί: η X-WP-Total διαφέρει (προϊόντα πρόχειρα, ιδιωτικά ή κρυφά δεν μετρώνται)· το Store API επιστρέφει 401 ή 403, συνήθως λόγω ενός πρόσθετου ασφαλείας, με αποτέλεσμα να μη λειτουργούν τα μπλοκ ολοκλήρωσης αγοράς.

Κόκκινο: το Store API δεν είναι προσβάσιμο ενώ ο ιστότοπός σας τρέχει WooCommerce· ή τα orders ή customers επιστρέφουν λίστα. Το τελευταίο είναι σοβαρό: κλείστε το αμέσως, ελέγξτε τα κλειδιά API και τα πρόσθετά σας, και εξετάστε αν πρέπει να γνωστοποιήσετε παραβίαση δεδομένων. Σε αυτή την περίπτωση το πρόγραμμα αποθηκεύει μόνο τον κωδικό κατάστασης, ποτέ το περιεχόμενο.

Στη συνέχεια ελέγξτε μόνοι σας στο REST API και στα Webhooks: ποια κλειδιά και webhooks υπάρχουν, και ξέρετε για το καθένα σε τι χρησιμεύει;

Περαιτέρω ανάγνωση

Μια στιγμή…

Ρυθμίστε τα domains σας

Ρυθμίστε για κάθε domain τους nameservers, τη σύνδεση με το hosting σας και ποιος θα είναι ο κάτοχος.

Φόρτωση των domains σας…