Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Θοδωρής Γκίτσος - Αναπτύσσοντας το πρόσθετο XM...

Θοδωρής Γκίτσος - Αναπτύσσοντας το πρόσθετο XML Feed for Skroutz for WooCommerce: Οι Προκλήσεις και οι Λύσεις πίσω από το νέο δωρεάν Skroutz Feed plugin

Πώς δημιουργείται ένα plugin που χρησιμοποιούν καθημερινά εκαντοντάδες WooCommerce eshops; Θα δούμε μαζί πώς δημιουργήθηκε το πρόσθετο “XML Feed for Skroutz for WooCommerce” από το μηδέν και ποιες πρακτικές προκλήσεις αντιμετώπισα στη διαδρομή. Από την αποδοτική δημιουργία του feed και την τεχνική βελτιστοποίηση μέχρι τη φροντίδα στο UI για να γίνει εύχρηστο για τον τελικό χρήστη. Η παρουσίαση θα περιλαμβάνει πρακτικά παραδείγματα, προβλήματα που λύθηκαν και συμβουλές για προγραμματιστές που θέλουν να αναπτύξουν plugins με στόχο την απλότητα και την αποτελεσματικότητα, αλλά και πώς να βρουν μια ισορροπία ανάμεσα στην προσφορά στο WordPress Community και το monetization.

Avatar for WordPress Greek Community

WordPress Greek Community PRO

November 08, 2025
Tweet

More Decks by WordPress Greek Community

Other Decks in Programming

Transcript

  1. WordCamp Athens 2025 Αναπτύσσοντας το πρόσθετο "XML Feed for Skroutz

    for WooCommerce" Οι Προκλήσεις και οι Λύσεις πίσω από το νέο, δωρεάν Skroutz Feed plugin
  2. ➔ Γιατί ένα ακόμα Skroutz Plugin; ➔ Αρχιτεκτονική & Εργαλεία

    ➔ Οι Σημαντικότερες Τεχνικές Προκλήσεις ➔ UI/UX: Αυτοί οι Άγνωστοι ➔ Προσφορά στο Community vs €€€ ➔ Συμπεράσματα και Q&A Τι θα δούμε + Disclaimers
  3. Το "κενό" στην αγορά Γιατί ένα ακόμα Skroutz Plugin; •

    Πολύπλοκο UI & δύσκολη ρύθμιση • Προβληματικό performance (ειδικά σε μεγάλα e-shops) • "Black box" - Δύσκολο debugging • Δύσκολη παραμετροποίηση για developers • Υψηλό κόστος Υπάρχουν δωρεάν και επί πληρωμή πρόσθετα, αλλά… Στόχος: Ένα plugin που είναι γρήγορο, απλό στη ρύθμιση, δωρεάν και 100% developer-friendly.
  4. Μέθοδος παραγωγής του XML Η Αρχιτεκτονική & τα Εργαλεία •

    Scheduled: Προγραμματισμένη δημιουργία σε συγκεκριμένη ώρα • On-demand: Επί τόπου δημιουργία μόλις ζητηθεί από τον Skroutz Scheduled vs on-demand • Συνεχόμενο: Πιο αξιόπιστο, πιο γρήγορο, μεγαλύτερες απαιτήσεις σε RAM • Σε μέρη: Ακριβώς το αντίθετο! Ένα συνεχόμενο script vs σε μέρη
  5. Τα εργαλεία Η Αρχιτεκτονική & τα Εργαλεία • Action Scheduler:

    Για την προγραμματισμένη εκτέλεση (απλό, δοκιμασμένο, εύκολο debugging) • WordPress Settings API: Για τα settings (απλό και συμβατό) • Product Meta: Για επιλογές ανά προϊόν (Διαθεσιμότητα, "Εξαίρεση από XML", "Custom Skroutz Τιμή") Η φιλοσοφία: Δεν χρειάζεται να εφεύρουμε ξανά τον τροχό! Μένουμε κοντά στο "core". Χρησιμοποιούμε τα εργαλεία που μας δίνουν το WordPress και το WooCommerce.
  6. Κι άλλα εργαλεία Η Αρχιτεκτονική & τα Εργαλεία • WC_Product_Query:

    Για τη συλλογή των προϊόντων (όχι custom SQL, όχι WP_Query) • WC_Logger: Για logging της διαδικασίας και των σφαλμάτων • i18n - gettext: Ο κλασικός τρόπος του WP για μεταφράσεις • WP-CLI: Ως bonus δυνατότητα για power users/server execution Bonus: • Software License: GPLv2+ - Σεβόμαστε την άδεια του WordPress (είναι θέμα ηθικής αλλά και νομιμότητας)
  7. 1 - Βελτιστοποίηση Απόδοσης Οι Σημαντικότερες Τεχνικές Προκλήσεις • WC_Product_Query:

    χρήση μόνο των product IDs (fields => 'ids'), δημιουργούμε μόνο ένα WC_Product object τη φορά μέσα στο loop • Βελτιστοποίηση του αλγορίθμου, αποδοτική διαχείριση των variations, αποφυγή διπλών υπολογισμών, χρήση caching • Συχνός καθαρισμός της object cache για απελευθέρωση RAM κατά τη διάρκεια του loop • Η λύση του WP-CLI / Server Cron για αποφυγή server limits Το πρόβλημα: PHP Timeouts & Exhausted Memory (RAM) Κυρίως σε μεγάλα eshops (20K - 1M προϊόντα)
  8. 2 - Προσαρμογή στις ιδιαιτερότητες του Skroutz Οι Σημαντικότερες Τεχνικές

    Προκλήσεις • Αυστηροί κανόνες για τίτλους, κωδικούς προϊόντων, brands κ.ά. • Ο Skroutz επιτρέπει variations μόνο με μέγεθος, οπότε οι χρωματικές (και όχι μόνο) παραλλαγές "σπάνε" σε ξεχωριστές εγγραφές στο XML • Σε κάποιες κατηγορίες δεν επιτρέπονται καθόλου variations (δυνατότητα παραμετροποίησης μέσω κώδικα) Το πρόβλημα: Το Skroutz έχει συγκεκριμένους και αυστηρούς κανόνες, ειδικά για τις παραλλαγές
  9. 3 - Καταγραφή & Debugging Οι Σημαντικότερες Τεχνικές Προκλήσεις •

    Καταγραφή στοιχείων εκτέλεσης (πότε ακριβώς έτρεξε, διάρκεια εκτέλεσης, χρήση RAM) • Καταγραφή σφαλμάτων (errors) • Καταγραφή προϊόντων που παραλήφθηκαν από το XML και του ακριβούς λόγου (π.χ. "Το προϊόν Χ αγνοήθηκε: Δεν έχει τιμή") • Monitor καλής λειτουργίας με άμεση ενημέρωση σε περίπτωση μη εκτέλεσης Το πρόβλημα: "Έτρεξε η δημιουργία του XML;", "Γιατί το feed μου δεν ανανεώνεται;", "Γιατί λείπει το προϊόν Χ;"...
  10. 4 - Συμβατότητα με 3rd-party plugins Οι Σημαντικότερες Τεχνικές Προκλήσεις

    Το πρόβλημα: "Το brand ή το barcode μου είναι σε custom field", "Χρησιμοποιώ WPML", "Έχω dynamic pricing plugin"...
  11. 4 - Συμβατότητα με 3rd-party plugins Οι Σημαντικότερες Τεχνικές Προκλήσεις

    • Μένουμε κοντά στο core, αυξάνουμε κατακόρυφα τη συμβατότητα με τα περισσότερα plugins και κυρίως το WooCommerce • Filters (apply_filters) παντού, ένας developer να μπορεί να τροποποιήσει το XML κατά βούληση και να το προσαρμόσει στο setup του • Συμβατότητα με κάποια εξαιρετικά δημοφιλή plugins (π.χ. brands, πολυγλωσσικότητας, δυναμικών εκπτώσεων κτλ). Αυτό μπορεί να γίνει και σταδιακά, upon request. Το πρόβλημα: "Το brand ή το barcode μου είναι σε custom field", "Χρησιμοποιώ WPML", "Έχω dynamic pricing plugin"...
  12. UX: Πρέπει να είναι εύχρηστο για όλους UI/UX: Και άλλα…

    μυθικά πλάσματα • Έμφαση στα βασικά: Σωστά ‘input types’ (number, select, κλπ.) • Υπαρκτά και κατανοητά ‘labels’ • Inline περιγραφές / επεξηγήσεις κάτω από κάθε setting • Σύνδεσμοι προς χρήσιμες εξωτερικές πηγές (όπου χρειάζεται) • Η διπλή προσέγγιση στο Documentation: ◦ Docs για χρήστες: Κατανοητές οδηγίες + Video Guide ◦ Docs για Developers: Οδηγίες για παραμετροποίηση, με όλα τα διαθέσιμα hooks/filters Το πρόβλημα: Πολλές ρυθμίσεις, δύσχρηστες, χωρίς επεξηγήσεις
  13. Εθελοντική προσφορά vs $$$: Υπάρχει Ισορροπία; Προσφορά στο Community vs

    $$$ Γιατί Δωρεάν; • Έκθεση, Branding, καθιέρωση ως "ειδικός" • "Για το community ρε γαμώτο!" - Έχω πάρει πολλά, ήρθε η ώρα να δώσω και κάτι πίσω... • High Impact (Είναι απαραίτητο εργαλείο για την αγορά, εύκολη είσοδος σε πολλά marketplaces) Το "Κρυφό Κόστος" του Δωρεάν • Support (Διαχείριση tickets στο .org, reviews, κλπ.)
  14. Εθελοντική προσφορά vs $$$: Υπάρχει Ισορροπία; Προσφορά στο Community vs

    $$$ Το "Freemium" μοντέλο - Η μέση λύση • Δίνουμε πραγματική αξία δωρεάν • Κρατάμε κάποιες προχωρημένες λειτουργίες για την επί πληρωμή έκδοση • Παράδειγμα: Το δωρεάν plugin στέλνει τα προϊόντα στο Skroutz μέσω του XML. Το Pro plugin κάνει το αντίστροφο, εισάγει τις παραγγελίες από το Skroutz Smart Cart στο WooCommerce.
  15. Συμπεράσματα Συμπεράσματα • Μένουμε κοντά στο Core: Χρησιμοποιούμε τα διαθέσιμα

    εργαλεία σωστά, δεν κάνουμε άσκοπες παραμετροποιήσεις & "καινοτομίες". • Δεν παραμελούμε το UI/UX: Δίνουμε έμφαση στο UI, το UX και φτιάχνουμε καλό Documentation (User & Dev). • Ο Developer είναι φίλος μας: Κάνουμε το plugin παραμετροποιήσιμο (hooks/filters). Οι άλλοι devs είναι σύμμαχοί μας, όχι ανταγωνιστές. • Ακούμε τους χρήστες & παρέχουμε Support: Ζητάμε feedback, το ακούμε (όσο πρέπει), και παρέχουμε καλή υποστήριξη. • Στηρίζουμε το community και το οικοσύστημα του WordPress.
  16. I’m Theo Gkitsos! Theodoros Gkitsos theodorosgkitsos.com @theogk github.com/theo-gk Developer at

    Digital Challenge Co-founder of youSync & myApodixi 100+ successful e-commerce projects 40+ active WP/Woo plugins Thank you WordCamp Athens!