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

WordPress hooks and plugin development - Χρήστος Ζιώγας

WordPress hooks and plugin development - Χρήστος Ζιώγας

14ο WordPress Larissa Meetup

WordPress Greek Community

October 23, 2018
Tweet

More Decks by WordPress Greek Community

Other Decks in Technology

Transcript

  1. WordPress hooks 
 and plugin development Chris Ziogas | Software

    Engineer at Authentiq | @ziogaschr
 WordPress Greek Community | Larissa WordPress meetup
  2. Τι είναι το WordPress Το WordPress είναι ένα σύστημα διαχείρισης

    περιεχομένου (CMS) ανοιχτού κώδικα που μπορείτε να χρησιμοποιήσετε για να δημιουργήσετε έναν όμορφο ιστότοπο, blog ή εφαρμογή. Εξυπηρετεί το 31% του παγκόσμιου ιστού και έχει από τις πιο ενεργές κοινότητες.
  3. Τα Hooks είναι ένας τρόπος ώστε ένα κομμάτι κώδικα να

    αλληλεπιδράσει / τροποποιήσει ένα άλλο κομμάτι κώδικα. Αποτελούν το θεμέλιο για το πώς αλληλεπιδρούν τα Plugins και τα Θέματα με το WordPress Core, αλλά επίσης χρησιμοποιούνται εκτενώς από το ίδιο το Core. Υπάρχουν δύο τύποι Hooks: Actions και Filters. Εμείς δηλώνουμε μια προσαρμοσμένη συνάρτηση γνωστή ως Callback και, στη συνέχεια, ορίζουμε στο WordPress σε ποιό συγκεκριμένο Action ή Filter θέλουμε να εκτελεστεί. • Τα Actions, σας επιτρέπουν να προσθέσετε δεδομένα ή να αλλάξετε τον τρόπο λειτουργίας του WordPress. 
 Οι Callback συναρτήσεις για τα Actions θα εκτελεστούν σε ένα συγκεκριμένο σημείο της εκτέλεσης του WordPress και μπορούν να εκτελέσουν κάποια εργασία, όπως την εμφάνιση περιεχομένου στον χρήστη ή την εισαγωγή κάποιου στοιχείου στη βάση δεδομένων. • Τα Filters, σας δίνουν τη δυνατότητα να αλλάξετε δεδομένα κατά την εκτέλεση του WordPress. 
 Οι Callback συναρτήσεις για τα Filters θα αποδεχθούν μια μεταβλητή, θα την τροποποιήσουν και θα την επιστρέψουν. setup_theme registered_taxonomy registered_post_type plugins_loaded wp_loaded init register_sidebar widgets_init load_textdomain wp_head get_header wp_enqueue_scripts the_post get_footer get_sidebar wp_footer custom_filter_1 custom_hook_1 Hooks: Actions και Filters SOS για τις εξετάσεις ;)
  4. ME ΤΑ HOOKS ΚΑΙ ΤΗΝ ΒΟΗΘΕΙΑ ΤΟΥ SUPERMAN… ΠΑMΕ ΤΡΑΙΝΟ

    Art By: Joe Bennett, Sean Parsons, Hi-Fi Α ΤΣ’ ΠΑΛΑΒΟΙ!
  5. The Hooks train init login_form get_sidebar wp_footer • widgets_init •

    login_form 10.— 1. some_other_callback_1 2. some_other_callback_2 11.— 1. some_other_callback_1 2. pdlm_handle_login_form 3. some_other_callback_3 • wp_head
  6. • widgets_init • login_form 10.— 1. some_other_callback_1 2. some_other_callback_2 11.—

    1. some_other_callback_1 2. pdlm_handle_login_form 3. some_other_callback_3 • wp_head The Hooks train init login_form get_sidebar wp_footer 1 2 3
  7. Η δομή ενός Plugin • Διαδρομή φακέλου: /wp-content/plugins/(plugin- name/)plugin-name.php •

    Plugin Header Details (θα δούμε παρακάτω τι είναι αυτό) • Αρχεία plugin: εικόνες, JavaScripts, Stylesheets, Fonts
  8. Πότε να κάνουμε Plugins; • functions.php vs Plugins • Για

    εμπορεύσιμους σκοπούς • Όταν θέλουμε την ίδια λειτουργιά σε περισσότερους του ενός ιστότοπου • ευκολότερα updates παντού
  9. Να θυμάστε πάντα • Να ακολουθείτε τις οδηγίες και συναρτήσεις

    του WordPress σχετικά με την ασφάλεια του ιστότοπου και του χρήστη • Να κάνετε sanitize και verify τα πάντα στον κωδικά, ειδικά ότι εισάγει ο χρήστης • Ο κώδικας του παραδείγματος, δεν είναι βέλτιστος για πραγματική χρήση
  10. Ο σκοπός του Plugin Αρχικά θα φτιάξουμε το εξής αρχείο

    
 /wp-content/plugins/wplarissameetup.php Plugin Header Details
  11. Τι να προσέξουμε στα Plugins • Μερικές φορές ο αριθμός

    εγκαταστάσεων, δεν είναι εφάμιλλος της ποιότητας • Να μην έχουν security issues • Να είναι updated για τις τελευταίες εκδόσεις • Κάνουν χρήση λάθος Hooks, απλά γιατί δουλεύουν
  12. Credits To Thomas Vitale for his inspiring presentation at WordCamp

    Torino 2017 where I got the inspiration for this presentation flow.
  13. Σας ευχαριστώ Chris Ziogas | Software Engineer at Authentiq |

    @ziogaschr
 WordPress Greek Community | Larissa WordPress meetup Plugin source: https://gist.github.com/ziogaschr/4bbcd530543786866a877d481a9600f6