WordPress Plug-ins: Από τη θεωρία στην πράξη (μέρος 1)
Προτού αρχίσουμε να κολυμπάμε σε βαθύτερα νερά, όσον αφορά την δημιουργία WordPress plug-ins τι θα λέγατε να εφαρμόσουμε όσα μάθαμε σε ένα απτό παράδειγμα. Θα ξεκινήσουμε (σε αυτό το άρθρο) ορίζοντας το πρόβλημα το οποίο θέλουμε να αντιμετωπίσουμε και θα δημιουργήσουμε τον σκελετό του plug-in που χρειαζόμαστε.
Το πρόβλημα
Όπως μπορεί να έχετε προσέξει στο μίνι κειμενάκι / βιογραφικό μου στο GreekTuts είμαι συνιδρυτής ενός ενημερωτικού blog με έδρα τη Θεσσαλονίκη (αν σας ενδιαφέρει ποιο είναι αυτό, μπορείτε να βρείτε πληροφορίες στο http://greektuts.net/author/akritikos/).
Όπως συμβαίνει στα περισσότερα blogs αυτού του τύπου, πολύ συχνά φιλοξενούμε διαγωνισμούς. Εν τάχει, η λογική είναι η ακόλουθη:
- Οι ενδιαφερόμενοι αφήνουν από ένα σχόλιο στο άρθρο του διαγωνισμού
- Την ημέρα της κλήρωσης χρησιμοποιούμε κάποια υπηρεσία παραγωγής τυχαίων αριθμών (π.χ. http://www.random.org/)
- Το σχόλιο με τον αριθμό που προήλθε από την παραπάνω γεννήτρια τυχαίων αριθμών κερδίζει
Μέχρι πρόσφατα δεν είχαμε κανένα πρόβλημα διότι το theme που χρησιμοποιούσαμε υποστήριζε αρίθμηση σχολίων ανά άρθρο. Ωστόσο, το νέο theme που έχει τεθεί σε λειτουργία εδώ και λίγο καιρό δεν υποστηρίζει αρίθμηση σχολίων.
Πιθανές λύσεις
Ο έμπειρος αναγνώστης μπορεί να αναρωτηθεί: «Μα τα WordPress themes δεν είναι και αυτά ένα σύνολο αρχείων σε κώδικα php, css, html, κλπ.; Δεν θα μπορούσαν να επέμβουν εκεί και να τροποποιήσουν τον τρόπο παρουσίασης των σχολίων;». Και θα είχε δίκαιο! Θα μπορούσαμε.
Ωστόσο…
- Το να μελετήσουμε υπάρχον κώδικα και να ανακαλύψουμε τι πρέπει να αλλάξει ώστε να έχουμε το επιθυμητό αποτέλεσμα είναι σαφώς δυσκολότερο από το να δημιουργήσουμε ένα μικρό κομμάτι κώδικα από το μηδέν.
- Εν γένει, όταν κανείς πειράζει υπάρχοντα κώδικα, επιβάλλεται μετά την αλλαγή να εκτελέσει εξαντλητικούς ελέγχους για να σιγουρευτεί ότι όλα λειτουργούν όπως πριν, δηλαδή ότι οι αλλαγές δεν επηρέασαν τον προϋπάρχοντα κώδικα.
Επομένως…
Η λύση του WordPress plug-in φαίνεται να είναι η πιο έξυπνη κίνηση. Έχοντας λοιπόν τις απαιτήσεις για την ανάπτυξη του plug-in, πάμε να το υλοποιήσουμε με βάση τα όσα έχουμε μάθει ως τώρα.
WordPress Plug-in: Numbered Author Comments
Στην παρούσα φάση, τα σχόλια στα άρθρα μας έχουν την παρακάτω μορφή
Θα θέλαμε να προσθέσουμε έναν αύξοντα αριθμό μπροστά από κάθε ψευδώνυμο χρήστη. Το αποτέλεσμα δηλαδή του plug-in μας θα πρέπει να κάνει το τμήμα των σχολίων να φαίνεται ως εξής:
Ας σκεφθούμε τώρα πως μπορεί να υλοποιηθεί ένα plug-in που θα επιφέρει το επιθυμητό αποτέλεσμα. Μας ενδιαφέρει, μετά την ενεργοποίηση του plug-in μας, να προστεθεί ένας αύξον αριθμός μπροστά από κάθε ψευδώνυμο χρήστη. Πρακτικά, θέλουμε να φιλτράρουμε τα ψευδώνυμα των σχολίων των άρθρων μας και να αλλάξουμε την εμφάνισή τους. Η λέξη κλειδί είναι προφανώς το «φιλτράρουμε» και συνδυάζεται με τα όσα έχουμε πει ως τώρα (προφανώς) με τα filters των WordPress plug-ins.
Άρα λοιπόν θέλουμε να δημιουργήσουμε ένα filter στο WordPress plug-in που πρόκειται να κάνουμε το οποίο θα κάνει τη δουλειά που προαναφέραμε.
Ο σκελετός
Επειδή η μεθοδικότητα είναι το κλειδί σε κάθε επιτυχημένη διαδικασία θα πάμε να δημιουργήσουμε προσεκτικά τον σκελετό του plug-in μας. Προς αποφυγήν παρεξηγήσεων τονίζω ότι ο σκελετός που θα δημιουργηθεί, μπορεί να αποτελέσει τον σκελετό για οποιοδήποτε plug-in θα επιχειρήσουμε να κάνουμε από εδώ και πέρα (δώστε προσοχή, μπορεί να το θεωρήσω δεδομένο στο μέλλον J ).
Α. Δομή του plug-in (σε επίπεδο συστήματος αρχείων)
Δημιουργούμε τους κατάλληλους καταλόγους και αρχέια
numberedAuthorComments/ (κατάλογος)
css/ (κατάλογος)
images/ (κατάλογος)
js/ (κατάλογος)
php/ (κατάλογος)
numberedAuthorsComments.php
ΠΡΟΣΟΧΗ:
- Η ονομασία του εξωτερικού φακέλου πρέπει να συμφωνεί με την ονομασία του αρχείου php
- Για τις ανάγκες του plug-in που πάμε να υλοποιήσουμε δεν θα χρειαστεί να χρησιμοποιήσουμε τους καταλόγους css, images, js, php. Παρόλα αυτά είναι καλή πρακτική να συνηθίσετε να χρησιμοποιείται αυτή την αρχιτεκτονική καταλόγων και αρχείων που δύναται να φιλοξενήσει το μεγαλύτερο μέρος των αναγκών ενός WordPress plug-in, εν γένει.
Β. Δομή και αρχιτεκτονική του numberedAuthorComments.php
Το numberedAuthorComments.php θα είναι το αρχείο που θα φιλοξενήσει την συνολική λειτουργικότητα του plug-in μας. Ας δούμε τη δομή του:
<?php /* Plugin Name: numberedAuthorsComments Plugin URI: http://www.newsfilter.gr Version: v0.5 Author: <a href=”http://krap.gr/”>Apostolos Kritikos</a> Description: This is my first plugin. Please don't be too hard on me if it crushes... */
Σε αυτό το σημείο δηλώνεται η ταυτότητα του plug-in (όνομα, ιστοσελίδα του plug-in, έκδοση, συγγραφέας και περιγραφή). Είναι απαραίτητο όλες αυτές οι πληροφορίες να εσωκλείονται σε /* … */.
if(!class_exists('numberedAuthorsComments')) {
class numberedAuthorsComments {
function numberedAuthorsComments() { //κατασκευαστής
}
function addNumbers($author='') {
}
}
} //τέλος κλάσης
Ο παραπάνω έλεγχος if(…) έχει διπλό χαρακτήρα. Αφενός ελέγχει αν υπάρχει άλλο plug-in με την ίδια ονομασία (ώστε να αποφευχθούν συγκρούσεις) και, αν δεν υπάρχει εκτελεί το περιεχόμενο της κλάσης numberedAuthorComments.
if(class_exists('numberedAuthorsComments')) {
$myplugin = new numberedAuthorsComments();
}
Αντιστοίχως, με έναν δεύτερο έλεγχο, τσεκάρουμε αν η κλάση numberedAuthorsComments υπάρχει και αν ναι, δημιουργούμε ένα αντικείμενό της, το οποίο στο παράδειγμά μας ονομάσαμε myplugin. Εν γένει, το αντικείμενο αυτό συγκεντρώνει μέσα του όλη τη λειτουργικότητα που περιλαμβάνει το plug-in που κατασκευάσαμε.
if(isset($myplugin)) {
//Actions
//. . .
//Filters
//. . .
}
?>
Ο τελευταίος αυτός έλεγχος εξετάζει αν το αντικείμενο στο οποίο αναφερθήκαμε πριν και, αν υπάρχει, αναλαμβάνει να εκτελέσει τη λειτουργικότητα του plug-in. Εφόσον, μέχρι στιγμής έχουμε δει μόνον τη χρήση actions και filters, η λειτουργικότητα στην οποία αναφερθήκαμε μπορεί να περιλαμβάνει μόνον αυτές τις δύο ομάδες χαρακτηριστικών. Αργότερα θα εμπλουτίσουμε με περισσότερα.
Στο συγκεκριμένο plug-in που προσπαθούμε να κατασκευάσουμε, χρειαζόμαστε ένα φίλτρο που θα προσθέτει έναν αριθμό μπροστά από το ψευδώνυμο κάθε συγγραφέα σχολίου σε κάθε άρθρο του blog μας. Στο επόμενο άρθρο θα δούμε πως υλοποιείται το φίλτρο αυτό, τι πρέπει να δηλωθεί και σε ποια σημεία του σκελετού που κατασκευάσαμε σήμερα.
Μέχρι τότε…
να είστε καλά και να προσέχετε τον εαυτό σας!
Μπορείτε να κατεβάσετε τα αρχεία του βοηθήματος εδώ





