WordPress Plug-ins: Από τη θεωρία στην πράξη (μέρος 2)

Post Pic
στις 04.08.10. Kατηγορίες Plugins-Πρόσθετα, Wordpress με 3 Σχόλια

Σε αυτό το δεύτερο και τελευταίο μέρος της σειράς «WordPress Plug-ins: Από τη θεωρία στην πράξη» θα εμπλουτίσουμε τον σκελετό που κατασκευάσαμε στο προηγούμενο άρθρο μας ώστε να επιτυγχάνει την λειτουργικότητα που αναζητούμε.

Πριν ξεκινήσουμε ας θυμηθούμε τα σημαντικότερα σημεία του εγχειρήματός μας όπως τα περιγράψαμε στο πρώτο μέρος της σειράς μας.

Το πρόβλημα

Επιθυμούμε να κατασκευάσουμε ένα WordPress Plug-in το οποίο θα προσθέτει έναν αύξοντα αριθμό μπροστά από τα μη αριθμημένα ψευδώνυμα των  συγγραφέων σχολίων του blog μας.

Γιατί να μην πειράξω το theme;

Ο έμπειρος αναγνώστης μπορεί να αναρωτηθεί: «Μα τα WordPress themes δεν είναι και αυτά ένα σύνολο αρχείων σε κώδικα php, css, html, κλπ.; Δεν θα μπορούσαν να επέμβουν εκεί και να τροποποιήσουν τον τρόπο παρουσίασης των σχολίων;». Και θα είχε δίκαιο! Θα μπορούσαμε.

Ωστόσο…

  • Το να μελετήσουμε υπάρχον κώδικα και να ανακαλύψουμε τι πρέπει να αλλάξει ώστε να έχουμε το επιθυμητό αποτέλεσμα είναι σαφώς δυσκολότερο από το να δημιουργήσουμε ένα μικρό κομμάτι κώδικα από το μηδέν.
  • Εν γένει, όταν κανείς πειράζει υπάρχοντα κώδικα, επιβάλλεται μετά την αλλαγή να εκτελέσει εξαντλητικούς ελέγχους για να σιγουρευτεί ότι όλα λειτουργούν όπως πριν, δηλαδή ότι οι αλλαγές δεν επηρέασαν τον προϋπάρχοντα κώδικα.

Ο στόχος μας με εικόνες

Στην παρούσα φάση, τα σχόλια στα άρθρα μας έχουν την παρακάτω μορφή

Θα θέλαμε να προσθέσουμε έναν αύξοντα αριθμό μπροστά από κάθε ψευδώνυμο χρήστη. Το αποτέλεσμα δηλαδή του 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...
*/
if(!class_exists('numberedAuthorsComments')) {
class numberedAuthorsComments {
var $i;
function numberedAuthorsComments() { //κατασκευαστής
$this->i = 0;
}
function addNumber($author='') {
$this->i++;
return "(".$this->i.") ".$author;
}
}
} //τέλος κλάσης
if(class_exists('numberedAuthorsComments')) {
$myplugin = new numberedAuthorsComments();
}
if(isset($myplugin))  {
//Actions
//Filters
add_filter('get_comment_author',array(&$myplugin, 'addNumber'));
}
?>

Αυτός είναι ο κώδικας του plug-in ολοκληρωμένος. Όπως μπορείτε να δείτε η διαφοροποίησή του από τον σκελετό που είχαμε κατασκευάσει στο προηγούμενο άρθρο μας είναι μόλις της τάξεως των 5 γραμμών. Αυτό δηλώνει ακριβώς την δύναμη και συνάμα την απλότητα της δημιουργίας WordPress plug-ins. Ας δούμε όμως αναλυτικά τη λειτουργικότητα των γραμμών κώδικα που προσθέσαμε.

var $i;

Πρόκειται για μια μεταβλητή που θα αποτελέσει τον απαριθμητή των σχολίων μας. Σε αυτή τη μεταβλητή θα κρατείται ο τελευταίος αριθμός που δόθηκε σε σχόλιο ώστε στο επόμενο σχόλιο, να δοθεί ο επόμενος αριθμός. Στη θεωρία του αντικειμενοστραφούς προγραμματισμού η συγκεκριμένη μεταβλητή ονομάζεται χαρακτηριστικό της κλάσης.

$this->i = 0;

Ως χαρακτηριστικό της κλάσης numberedAuthorsComments, η $i οφείλει να αρχικοποιηθεί στον κατασκευαστή (ή δημιουργό) της κλάσης. Αυτό συμβαίνει με την παραπάνω εντολή (η σύνταξη πρέπει να γίνει με αυτόν ακριβώς τον τρόπο). Το 0 εδώ αποτελεί μία σύμβαση. Θεωρώ ότι αρχικοποιώ το μετρητή με 0 ώστε σε κάθε σχόλιο που θα εμφανίζεται να αυξάνω κατά 1.

function addNumber($author='') {
$this->i++;
return "(".$this->i.") ".$author;
}

Η μέθοδος addNumbers αποτελεί το κλειδί του plug-in. Αρχικά, η μεταβλητή $i αυξάνει κατά 1 και στη συνέχεια επιστρέφεται ένα αλφαριθμητικό το οποίο περιλαμβάνει τη μεταβλητή $i κλεισμένη σε παρενθέσεις ακολουθούμενη από το όνομα του εκάστοτε συγγραφέα σχολίου για το εκάστοτε άρθρο.

Σημαντική λεπτομέρεια αποτελεί η μεταβλητή $author=” που ζητείται σαν όρισμα από την μέθοδο addNumbers. Εδώ, το WordPress τροφοδοτεί το όνομα του εκάστοτε συγγραφέα σχολίου (με τρόπο που θα περιγράψουμε παρακάτω).

add_filter('get_comment_author',array(&$myplugin, 'addNumber'));

Η τελευταία  και σπουδαιότερη γραμμή / προσθήκη στο plug-in μας. Αν και έχουμε ασχοληθεί αναλυτικά με τις γραμμές αυτού του τύπου στα πρώτα μας άρθρα, ας κάνουμε μια μικρή επανάληψη.

Η κλήση add_filter κάνει ουσιαστικά την  χρήση hooks για να επιβάλει το επιθυμητό φίλτρο στα επιθυμητά δεδομένα. Στην παρούσα φάση το hook είναι η δήλωση get_comment_author και όπως είναι φανερό από το όνομα, αναλαμβάνει να επιστρέψει τα ονόματα των συγγραφέων των σχολίων ανά άρθρο του blog στο οποίο έχει εγκατασταθεί το plug-in που κατασκευάζουμε.

Με απλά λόγια: Το προαναφερθέν hook στέλνει υπό τη μορφή ορίσματος το όνομα των συγγραφέων των σχολίων του εκάστοτε άρθρου στην μέθοδο addNumber του αντικειμένου myPlugin (η χρήση των &$ είναι υποχρεωτική). Στη συνέχεια η μέθοδος addNumbers προσθέτει τον αύξοντα αριθμό μπροστά από το όνομα του συγγραφέα του εκάστοτε σχολίου, με τον τρόπο που περιγράψαμε και το επιστρέφει, πρακτικά, πίσω στη μηχανή του WordPress.

Στο τέλος του άρθρου μπορείτε να βρείτε την τελική, ολοκληρωμένη έκδοση του plug-in και να το εγκαταστήσετε στο blog σας κατά τα γνωστά. Αν σε κάποιο άρθρο υπάρχουν σχόλια, μετά την ενεργοποίηση του plug-in θα πρέπει να εμφανίζεται μία extra πληροφορία δίπλα από το ψευδώνυμο κάθε συγγραφέα σχολίου που θα έχει τη μορφή:

( ΑΡΙΘΜΟΣ ΣΧΟΛΙΟΥ ) ΨΕΥΔΩΝΥΜΟ

Φυσικά, αν το theme σας ήδη υποστηρίζει αριθμούς σχολίων, μετά την ενεργοποίηση του plug-in, απλά θα βλέπετε τον αριθμό 2 φορές.

Με αυτό το άρθρο ολοκληρώνεται η πρώτη απόπειρα εφαρμογής της θεωρίας μας σε ένα πραγματικό plug-in. Παρά την απλότητά του, θεωρώ ότι είναι σημαντικό βήμα κυρίως για τους αρχάριους στον χώρο. Μείνετε συντονισμένοι, υπάρχει μέλλον.

Μέχρι τότε μη ξεχνάτε…

να είστε καλά και να προσέχετε τον εαυτό σας!

Μπορείτε να κατεβάσετε τα αρχεία του βοηθήματος εδώ

Tags: , , , , , , , , , , ,

krap { Προσωπική Ιστοσελίδα / Άρθρα Στο GreekTuts }
Γεια χαρά. Ονομάζομαι Απόστολος. Είμαι αρθρογράφος στο GreekTuts σε θέματα προγραμματισμού και παραγωγικότητας. Είμαι επίσης συνιδρυτής του NewsFilter.gr, blog νέων γενικού ενδιαφέροντος που εδρεύει στη Θεσσαλονίκη. Συνήθως δεν έχω ελεύθερο χρόνο, αλλά όταν έχω ενημερώνω το προσωπικό μου blog. Επίσης, είμαι εθισμένος στην καφεΐνη :)

3 Σχόλια στο άρθρο WordPress Plug-ins: Από τη θεωρία στην πράξη (μέρος 2)

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>