Ένας από τους κύριους λόγους για τη συνεχή δημοτικότητα του WordPress είναι η ευκολία με την οποία μπορεί να επεκταθεί και να προσαρμοστεί με plugins.
Η οικοδόμηση ενός plugin μπορεί να φαίνεται σαν ένα αδύνατο έργο, αλλά είναι απλούστερο από ό, τι μπορεί να σκεφτείς. Σήμερα ξεκινάμε τη σειρά "Δημιουργία της πρώτης σας προσθήκης WordPress", η οποία θα καλύψει τις πιο σημαντικές αρχές και τις διαδικασίες της διαδικασίας.
Μέχρι το τέλος της σειράς θα είστε πλήρως προετοιμασμένοι να πραγματοποιήσετε περαιτέρω πειράματα από μόνος σας, βασιζόμενοι στις βέλτιστες πρακτικές και τις συμβάσεις που υιοθετήθηκαν από την εκτεταμένη κοινότητα WordPress.
Πρόκειται για ένα σενάριο PHP που τροποποιεί ή επεκτείνει τη φυσική λειτουργικότητα του WordPress.
Παρέχοντας ένα πολύ απλό αλλά ευέλικτο Plugin API , Το WordPress προμηθεύει κάθε προγραμματιστή με τα ακόλουθα πλεονεκτήματα για τη χρήση του plugin:
Ανεξάρτητα από την εμπειρία κωδικοποίησης PHP - η δική σας αληθινά έγραψε το πρώτο της plugin μόλις τελείωσε ένα βιβλίο "PHP for Dummies" - είστε ένα μικρό βήμα μακριά από τη δημιουργία της πρώτης σας προσθήκης για το WordPress. Ας πάρουμε το βήμα μαζί.
Το πρωταρχικό καθήκον που θα διερευνήσουμε σήμερα είναι να οικοδομήσουμε ένα στερεό θεμέλιο plugin. Αυτό το ίδρυμα πρέπει να πληρεί τις απαιτήσεις του WordPress και να κάνει το plugin αναγνωρίσιμο από τον πυρήνα. Ταυτόχρονα, θα πρέπει να ακολουθούν κοινές πρακτικές και συμβάσεις, αποδεκτές από την κοινότητα, για να αποφευχθούν πιθανές συγκρούσεις με άλλα πρόσθετα που μπορεί να εγκατασταθούν σε έναν ιστότοπο.
Πρώτα απ 'όλα, πρέπει να διασφαλίσετε ότι το όνομα του plugin σας είναι μοναδικό. Ακόμη και αν δεν πρόκειται να κάνετε τη δουλειά σας δημόσια κυκλοφορία, πρέπει τουλάχιστον να είστε σίγουροι ότι δεν υπάρχει δυνατότητα του δικτυακού σας τόπου να χρησιμοποιεί δύο plugins με το ίδιο όνομα. Η απλή αναζήτηση αποθετηρίου (και Google) είναι ο φίλος σας όταν αποφεύγετε την εσφαλμένη επιλογή.
Για να αυξήσετε την πιθανότητα ένα όνομα να είναι μοναδικό, πολλοί προγραμματιστές δημιουργούν το πρόθεμα της μάρκας, το οποίο είναι συντομογραφία του ονόματος του προγραμματιστή (ή ψευδώνυμο). Αυτό το πρόθεμα με σύντομη αναφορά στο όνομα της προσθήκης θα πρέπει στη συνέχεια να χρησιμοποιείται παντού - σε ονόματα αρχείων, λειτουργιών, κλάσεων, μεταβλητών κλπ. Αυτό βοηθά στην αποφυγή συγκρούσεων ονομασίας με άλλα πρόσθετα, θέματα και τον ίδιο τον πυρήνα.
Ας ξεκινήσουμε με ένα παράδειγμα. Εγκαινιάζουμε το όνομα "Hello World Plugin" και αυξάνουμε τις πιθανότητες να είμαστε μοναδικοί και χρησιμοποιούμε το "My super prefix" που μετατρέπεται σε συντομογραφία "MSP". Αυτό μας δίνει το πραγματικά μοναδικό όνομα "MSP Hello World Plugin". η αναζήτηση μέσα από το χώρο αποθήκευσης των πρόσθετων στοιχείων επιβεβαιώνει ότι κανένας άλλος δεν το χρησιμοποιεί.
Το επόμενο βήμα είναι να δημιουργήσουμε τα αρχεία του plugin. Συνιστάται ιδιαίτερα να τις αποθηκεύσετε σε ένα ξεχωριστό φάκελο μέσα σε ένα ειδικό φάκελο plugin. Αυτός ο φάκελος θα πρέπει να ονομάζεται σύμφωνα με το ίδιο το plugin, στην περίπτωση μας θα μπορούσε να είναι 'msp-helloworld'. Ο φάκελος θα πρέπει να περιλαμβάνει το κύριο αρχείο προσθήκης με το ίδιο όνομα: 'msp-helloworld.php'.
ο WordPress Codex συνιστά επίσης ότι συμπεριλαμβάνετε ένα αρχείο readme.txt. Αυτό το αρχείο περιέχει τις πληροφορίες σχετικά με το plugin σας μια τυποποιημένη μορφή . Αν πρόκειται να υποβάλετε το plugin σας στο αποθετήριο WordPress, η ύπαρξη του readme.txt είναι υποχρεωτική. Αλλά μην το σκέφτεστε ως βάρος, υπάρχουν πολλά οφέλη για να γίνει αυτό.
Εάν το plugin σας υποτίθεται ότι έχει πολλά αρχεία ή φορτώνει ορισμένα στοιχεία (αρχεία εικόνων, css και js), θα πρέπει να οργανώνονται σε υποφακέλους. Η σωστή οργάνωση αρχείων αποτελεί ένδειξη επαγγελματικής εργασίας. Μπορείτε να βασιστείτε στο ακόλουθο μοτίβο:
Κάθε plugin πρέπει να είναι υποχρεωτική επί κεφαλής . Βοηθάει το WordPress να αναγνωρίσει τη δέσμη ενεργειών ως έγκυρο plugin και να εξάγει τις κατάλληλες πληροφορίες στην οθόνη διαχείρισης των προσθηκών.
Αυτή η κεφαλίδα είναι ένα μπλοκ σχολίων PHP που βρίσκεται στην κορυφή του αρχείου του κύριου plugin:
/*Plugin Name: MSP Hello WorldDescription: Create hello world messageVersion: 1.0Author: Author's nameAuthor URI: http://authorsite.com/Plugin URI: http://authorsite.com/msp-helloworld*/
Οι πληροφορίες της κεφαλίδας θα εμφανίζονται στην αντίστοιχη σειρά του plugin στην οθόνη διαχείρισης.
Η σειρά των γραμμών δεν είναι σημαντική, αλλά το αρχείο πρέπει να είναι σε κωδικοποίηση UTF-8.
Σημειώστε ότι είναι σημαντικό να είστε σύμφωνοι με το πρότυπο αρίθμησης έκδοσης που έχετε επιλέξει (π.χ.xxx), για το μηχανισμό αναβάθμισης του WordPress για να το ανιχνεύσετε σωστά.
Μέχρι τώρα έχουμε δημιουργήσει διαφορετικά αρχεία για το plugin μας (στους κατάλληλους υποφακέλους), τώρα πρέπει να προσδιορίσουμε τις σωστές διαδρομές (ή διευθύνσεις URL) σε αυτές μέσα στον κώδικα του plugin. Λαμβάνοντας υπόψη το γεγονός ότι ο φάκελος περιεχομένου wp θα μπορούσε να μετακινηθεί από την προεπιλεγμένη θέση του, γίνεται σαφές ότι οι διαδρομές στα αρχεία plugin δεν πρέπει να είναι hardcoded, αλλά θα πρέπει να εντοπιστούν.
Το WordPress έχει δύο λειτουργίες, plugin_dir_path και plugin_dir_url για την αντιμετώπιση του ζητήματος, αλλά μπορούμε να προχωρήσουμε περαιτέρω χρησιμοποιώντας το ακόλουθο τέχνασμα:
define('MSP_HELLOWORLD_DIR', plugin_dir_path(__FILE__));define('MSP_HELLOWORLD_URL', plugin_dir_url(__FILE__));
Με αυτό το μικρό απόσπασμα (που περιλαμβάνεται στο κύριο αρχείο plugin) εντοπίζουμε τη διαδρομή και τη διεύθυνση URL στο φάκελο του plugin μας μέσα στην εγκατάσταση του WordPress και τα αναθέτουμε στις κατάλληλες σταθερές. Μετά από αυτό μπορούμε να χρησιμοποιήσουμε αυτές τις σταθερές σε συνδυασμό με γνωστές σχετικές διαδρομές στους υπο-φακέλους, για παράδειγμα MSP_HELLOWORLD_DIR.'assets/img/image.jpg'
.
Χρησιμοποιώντας αυτές τις σταθερές μπορούμε επίσης να συμπεριλάβουμε εύκολα αρχεία plugin από τους υπο-φακέλους μέσα στο κύριο αρχείο:
function msp_helloworld_load(){if(is_admin()) //load admin files only in adminrequire_once(MSP_HELLOWORLD_DIR.'includes/admin.php');require_once(MSP_HELLOWORLD_DIR.'includes/core.php');}msp_helloworld_load();
Μετά την εγκατάσταση, το plugin θα μπορούσε να βρίσκεται σε ενεργή ή ανενεργή κατάσταση.
Η ενεργή κατάσταση σημαίνει ότι ενεργοποιήθηκε από το χρήστη και ο κώδικας του θα εκτελεστεί από το WordPress κάθε φορά που ζητείται μια σελίδα.
Το plugin θα μπορούσε επίσης να απενεργοποιηθεί από το χρήστη, πράγμα που σημαίνει ότι τα αρχεία διατηρούνται στις θέσεις τους, αλλά ο κώδικας δεν εκτελείται.
(Το plugin θα μπορούσε επίσης να απεγκατασταθεί εντελώς από έναν χρήστη, πράγμα που σημαίνει ότι τα αρχεία διαγράφονται από το φάκελο plugins.)
Το WordPress μπορεί να πιάσει αλλαγές σε αυτές τις καταστάσεις και να εκτελέσει κάποιο κώδικα προγραμματισμένο για τέτοιες αλλαγές. Αν κάποιος κώδικας έχει προγραμματιστεί για ενεργοποίηση ή απενεργοποίηση, θα εκτελείται μόνο σε αυτή τη συγκεκριμένη στιγμή, όχι σε κάθε φόρτωση σελίδας.
Για παράδειγμα, εάν το plugin υποτίθεται ότι χειρίζεται με κανόνες αναδιατύπωσης, θα πρέπει να τις καθαρίσει κατά την ενεργοποίηση / απενεργοποίηση. Εάν το πρόσθετο δημιουργεί μερικές καταχωρήσεις σε μια βάση δεδομένων, για παράδειγμα αποθηκεύοντας επιλογές, η υγιής πρακτική είναι να τα διαγράψετε όταν αποσυνδεθεί το plugin.
Πώς μπορεί να γίνει;
Για ενεργοποιήσεις ενεργοποίησης και απενεργοποίησης μπορούμε να καταχωρήσουμε ένα λεγόμενο "άγκιστρο ενεργοποίησης" και "άγκιστρο απενεργοποίησης". Είναι απλά ένα κομμάτι κώδικα που λέει στο WordPress να εκτελεί μία συγκεκριμένη λειτουργία κατά την ενεργοποίηση και μια άλλη συγκεκριμένη λειτουργία κατά την απενεργοποίηση. Ακολουθεί ένα παράδειγμα τέτοιου κώδικα:
register_activation_hook(__FILE__, 'msp_helloworld_activation');register_deactivation_hook(__FILE__, 'msp_helloworld_deactivation');function msp_helloworld_activation() {//actions to perform once on plugin activation go here}function msp_helloworld_deactivation() {// actions to perform once on plugin deactivation go here}
Για τις ενέργειες κατάργησης εγκατάστασης έχουμε δύο εναλλακτικές λύσεις.
Μια επιλογή είναι να δημιουργήσετε ένα αρχείο uninstall.php στο φάκελο του plugin (μαζί με το κύριο αρχείο προσθήκης και readme.txt) και να συμπεριλάβετε όλους τους απαιτούμενους κώδικες. Εάν υπάρχει ένα uninstall.php, το WordPress θα το εκτελέσει αυτόματα όταν το plugin διαγραφεί από το χρήστη. Εναλλακτικά, μπορούμε να καταχωρήσουμε ένα άγκιστρο απεγκατάστασης σχεδόν με τον ίδιο τρόπο όπως και με τα άγκιστρα ενεργοποίησης και απενεργοποίησης. Το δύσκολο κομμάτι είναι να το καλέσετε μόνο μία φορά, κατά την ενεργοποίηση. Ακολουθεί ένα παράδειγμα:
register_activation_hook(__FILE__, 'msp_helloworld_activation');function msp_helloworld_activation() {//actions to perform once on plugin activation go here//register uninstallerregister_uninstall_hook(__FILE__, 'msp_helloworld_uninstall');}function msp_helloworld_uninstall(){//actions to perform once on plugin uninstall go here}
Είναι σημαντικό να γνωρίζετε ότι μόνο μία από τις εναλλακτικές λύσεις που περιγράφονται θα λειτουργήσει: αν υπάρχει uninstall.php, θα εκτελεστεί και οποιοσδήποτε άγκιστρο απεγκατάστασης δεν θα απολυθεί.
Συνοψίζοντας όλα τα παραπάνω, εδώ είναι μια επισκόπηση της δημιουργίας μιας στέρεας βάσης για ένα WordPress plugin:
Μετά από όλα αυτά τα βήματα είστε έτοιμοι να κάνετε πραγματικά το plugin σας να κάνει κάτι δημιουργώντας τον κώδικα του. Θα γνωρίσουμε μερικές χρήσιμες έννοιες που καθιστούν τα plug-ins του WordPress συναρπαστικά και ευέλικτα στο επόμενο άρθρο αυτής της σειράς. Ωστόσο, ορισμένες σημαντικές πτυχές μπορούν να τονιστούν αυτή τη στιγμή:
Ελπίζω ότι αυτές οι εισαγωγικές πληροφορίες θα σας εμπνεύσουν να αρχίσετε να αναπτύσσεστε με το WordPress. Αναζητήστε το επόμενο μέρος της σειράς στο εγγύς μέλλον.
Τι συμβουλές θα προσθέσετε σε αυτή την εισαγωγή; Τι θα θέλατε να δείτε στο επόμενο άρθρο της σειράς; Ενημερώστε μας στα σχόλια!