WordPress Plug-in: Actions και Filters
Στο προηγούμενο εισαγωγικό άρθρο, κάναμε την εισαγωγή στην διαδικασία δημιουργίας ενός Plugin για το Wordpress. Σε αυτό το μέρος θα πάρουμε μια γεύση από την πραγματική δύναμη των WordPress plugins ελέγχοντας το περιεχόμενο της WordPress εγκατάστασής μας.
Έχοντας μάθει πως να κατασκευάζουμε τον σκελετό ενός WordPress plug-in ήρθε η ώρα να συνεχίσουμε με πιο ενδιαφέροντα πράγματα.
Actions και Filters. Πως αρχικοποιώ;
if(isset($myPlugin)) {
//Actions
//Filters
}
Απλό έτσι; Το μόνο που χρειάζεται κάνετε είναι να ελέγξετε ότι ένα αντικείμενο τύπου myTestPlugin έχει δημιουργηθεί (κατ’ επέκταση φυσικά ελέγχετε και ότι το plug-in έχει εγκατασταθεί και αρχικοποιηθεί σωστά).
WordPress Actions
Ας προσπαθήσουμε να γεμίσουμε τα κενά κάτω από τα σχόλια. Ξεκινούμε με τις Actions (//Actions).
Για να δημιουργήσουμε μία action θα πρέπει σε πρώτη φάση να κατασκευάσουμε μία συνάρτηση (function) για το plug-in μας.
function testFunction() {
?>
<!-- just a comment -->
<?php
}
Όπως μπορείτε να καταλάβετε η παραπάνω συνάρτηση απλά προσθέτει ένα comment… και τίποτε άλλο. Ας δούμε πως την καλούμε.
Χρειαζόμαστε μία action. Επομένως…
if(isset($myPlugin)) {
//Actions
add_action('wp_head', array(&$myPlugin, 'testFunction'), 1);
//Filters
}
δηλαδή…
η πλήρης σύνταξη της add_action() σύμφωνα με το WordPress Plugin API είναι add_action(‘hook_name’, array(&$myPlugin,’myFunction’), PRIORITY);
- hook_name: το όνομα με το οποίο θέλουμε να καλούμε την action (σε κάποιο σημείο της wordpress εγκατάστασής μας).
- array(…): πίνακας με την ταυτότητα του action
- &$myPlugin: αναφορά στην μεταβλητή / αντικείμενο της κλάσης που αντιπροσωπεύει το plug-in μας
- MyFunction: η συνάρτηση που επιθυμούμε να καλέσουμε
- PRIORITY: προτεραιότητα εκτέλεσης. Τα μικρά νούμερα εκτελούνται γρηγορότερα
Πως το τρέχω;
Όπως αναφέραμε στο προηγούμενο άρθρο μας. Αφότου το plugin εγκατασταθεί χωρίς πρόβλημα, ενεργοποιώντας το, το σχόλιο που περιλαμβάνεται στην testFunction θα εμφανιστεί στο πάνω μέρος της κεντρικής ιστοσελίδας της WordPress εγκατάστασής μας.
Αφαίρεση των actions
Οι actions μπορούν να αφαιρούνται δυναμικά, ακριβώς όπως δημιουργούνται κάνοντας χρήση της ακόλουθης σύνταξης:
remove_action('action_hook','action_function')
- hook_name: το όνομα με το οποίο θέλουμε να καλούμε την action (σε κάποιο σημείο της wordpress εγκατάστασής μας).
- MyFunction: η συνάρτηση που επιθυμούμε να καλέσουμε
WordPress Filters
Τα WordPress filters αποτελούν συναρτήσεις που είναι υπεύθυνες για αλλαγές κειμένου. Η ανάγκη για την αλλαγή κειμένου πηγάζει είτε από την ανάγκη να το εισάγουμε σε μία βάση δεδομένων, είτε από την ανάγκη να το εμφανίσουμε στον χρήστη.
Τι μπορώ να αλλάξω χρησιμοποιώντας filters;
- Άρθρα
- Σχόλια
- Feeds, κ.α.
Filter περιεχομένου
Είπαμε ότι τα filters αποτελούν ουσιαστικά συναρτήσεις. Ένα πολυ ενδιαφέρον filter είναι το ‘the_content’. Αυτό που ουσιαστικά κάνει είναι να επεμβαίνει στο κείμενο ενός άρθρου. Στο παράδειγμα που ακολουθεί θα χρησιμοποιήσουμε το filter περιεχομένου για να προσθέτουμε μία γραμμή στο τέλος κάθε άρθρου.
Σύμφωνα με το WordPress Plugin API η σύνταξη της add_filter είναι η ακόλουθη:
add_filter('hook_name','my_filter',[priority],[accepted_args]);
Ας φτιάξουμε για αρχή την συνάρτηση που θα προσθέτει την έξτρα γραμμή:
function addLine($content=”) {
$content .= “<p>My text goes here</p>”;
return $content;
}
- Αρχικά δηλώνεται η συνάρτηση η οποία παίρνει σαν όρισμα μία μεταβλητή
- Αν δεν δοθεί κείμενο κατά την κλήση της, δίδεται μία default τιμή
- Στο κείμενο που δόθηκε (ή η default τιμή αν δε δόθηκε τίποτε) προστίθεται η γραμμή που θέλουμε να τελειώνει το post (στην περίπτωσή μας “My text goes here”)
- Τέλος, επιστρέφεται το αλφαριθμητικό στην τελική του μορφή.
Στην συνέχεια θα πρέπει να εκτελέσουμε την συνάρτηση μας αυτή κάνοντας χρήση του filter ‘the_content’. Κάνοντας χρήση του κώδικα που έχουμε ως τώρα, μετά την προσθήκη του filter θα μοιάζει κάπως έτσι:
if(isset($myPlugin)) {
//Actions
add_action('wp_head', array(&$myPlugin, 'testFunction'), 1);
//Filters
add_filter('the_content', array(&$myPlugin,'addLine'));
}
Εφόσον το plugin εγκατασταθεί και ενεργοποιηθεί, στο τέλος κάθε άρθρου θα πρέπει να βλέπετε τουλάχιστον (
) την έξτρα γραμμή.
Filter συγγραφεά
Όπως είπαμε τα filters μπορούν να προσφέρουν μεγάλη λειτουργικότητα. Πριν κλείσουμε λοιπόν το άρθρο θα δημιουργήσουμε ακόμη ένα φίλτρο, προσανατολισμένο στους συγγραφείς σχολίων αυτή τη φορά.
Όπως και πριν, χρειαζόμαστε μία συνάρτηση:
function authorFunction($author=”) {
return strtoupper($author);
}
- Αρχικά δηλώνεται η συνάρτηση η οποία παίρνει σαν όρισμα μία μεταβλητή (στην συγκεκριμένη περίπτωση το όνομα το συγγραφέα)
- Αν δεν δοθεί κείμενο κατά την κλήση της, δίδεται μία default τιμή
- Το περιεχόμενο της μεταβλητής (στην συγκεκριμένη περίπτωση ο συγγραφέας του σχολίου, επιστρέφεται με κεφαλαία γράμματα
Αυτό που πρέπει να κάνουμε τώρα είναι να επιβάλουμε στην παραπάνω συνάρτηση να τρέξει κατά την συγγραφή ενός σχολίου από κάποιον συγγραφέα. Για τον λόγο αυτό θα χρησιμοποιήσουμε το get_comment_author filter.
if(isset($myPlugin)) {
//Actions
add_action('wp_head', array(&$myPlugin, 'testFunction'), 1);
//Filters
add_filter('the_content', array(&$myPlugin,'addLine'));
add_filter('get_comment_author',array(&$myPlugin, authorFunction));
}
Ως συνήθως, αν εγκαταστήσετε και ενεργοποιήσετε το plugin, στο εξής, θα πρέπει τα ονόματα των συγγραφέων των σχολίων από εδώ και στο εξής να εμφανίζονται σε κεφαλαία γράμματα.
Στο σημερινό μας άρθρο, πήραμε μια γεύση από την πραγματική δύναμη των WordPress plugins ελέγχοντας το περιεχόμενο της WordPress εγκατάστασής μας. Ωστόσο, βρισκόμαστε ακόμη στην αρχή. Μείνετε συντονισμένοι για το επόμενο άρθρο της σειράς. Μέχρι τότε…
να είστε καλά και να προσέχετε τον εαυτό σας!
[Πηγή:Devlounge]


