WordPress Plug-in: Δομή & Αρχιτεκτονική
“Η αρχή είναι το ήμισυ του παντός”. Έχοντας αυτό το μότο στο μυαλό μας θα κάνουμε σήμερα την πρώτη μας εισαγωγή στην δημιουργία προσθέτων (plug-ins) στο WordPress από το μηδέν. Σε αργότερα βοηθήματα θα δούμε όλα όσα χρειάζεται να ξέρουμε για να δημιουργήσουμε το δικό μας Plugin
Στην παρούσα φάση δεν υπάρχουν προαπαιτούμενα.
Πως λειτουργεί;
Ας ξεκινήσουμε με μια μίνι αναφορά στο πως εγκαθιστούμε ένα WordPress plug-in το οποίο έχουμε κατασκευάσει (μπορεί να σας φαίνεται ότι προτρέχω, αλλά πιστέψτε με είναι πολύ σημαντικό να γνωρίζεται πως λειτουργεί πραγματικά αυτή η διαδικασία πριν ξεκινήσετε να κατασκευάζετε το πρώτο σας plug-in).
- Τοποθετούμε το plug-in στον φάκελο “wp-content/plugins/” (μετά από αυτό το βήμα το plug-in μας πρέπει να είναι έτοιμο για εγκατάσταση – να φαίνεται δηλαδή στη λίστα με τα διαθέσιμα προς εγκατάσταση plug-ins – ).
- Όταν το plug-in ενεργοποιείται πρακτικά ζητά από το WordPress να φορτώσει τον κώδικα σε κάθε μια από τις σελίδες (συμπεριλαμβανομένης και αυτής του διαχειριστή). ΠΡΟΣΟΧΗ: Όταν ενεργοποιείται πολλά plug-ins, η εγκατάσταση του WordPress σας ενδέχεται να λειτουργεί πολύ πιο αργά.
Αφότου εκτελεστούν τα δύο ανωτέρω βήματα θα πρέπει το plug-in σας να είναι εγκατεστημένο και σε λειτουργία.
Πριν προχωρήσουμε στα ζητήματα δομής και αρχιτεκτονικής ενός WordPress plug-in θεωρούμε δόκιμο να αναφέρουμε μερικές ακόμη ενδιαφέρουσες λειτουργίες που μπορούν να επιτευχθούν από ένα WordPress plug-in.
- Δεδομένου ότι το WordPress plug-in φορτώνει τον κώδικά σας αυτόματα, σας επιτρέπει να επιτύχετε διάδραση τόσο με το WordPress plug-in API όσο και με τα tags των WordPress Templates (δυνατότητα χρήσης των υπαρχόντων ή / και δημιουργία νέων).
- Αν σκοπεύετε να εκτελέσετε αλλαγές στο περιεχόμενο των άρθρων ή στα σχόλια, θα πρέπει να μελετήσετε τα σχετικά με το WordPress Loop. Μπορείτε να ελέγξετε τη συμπεριφορά του κώδικα και που αυτός τρέχει κάθε φορά, χρησιμοποιώντας actions και filters (για τα οποία θα μιλήσουμε αναλυτικότερα σε επόμενο άρθρο).
Δομή του plug-in: Αρχείο ή φάκελος;
Η αλήθεια είναι ότι δεν υπάρχει σωστό και λάθος. Ένα WordPress plug-in μπορεί να αποτελείται απλά από ένα αρχείο php ή από μία πιο σύνθετη δομή, ένα κατάλογο αρχείων. Ας δούμε ένα παράδειγμα ενός τέτοιου καταλόγου:
- ΟΝΟΜΑ_ΚΑΤΑΛΟΓΟΥ (δηλαδή το όνομα του plug-in)
- ◦ ΟΝΟΜΑ_ΚΑΤΑΛΟΓΟΥ.php (υποχρεωτικά)
- ◦ ΦΑΚΕΛΟΣ js (φάκελος που θα περιέχει αρχεία javascript – προαιρετικά)
- ◦ ΦΑΚΕΛΟΣ css (φάκελος που θα περιέχει αρχεία css – προαιρετικά)
- ◦ ΦΑΚΕΛΟΣ php (φάκελος που θα περιέχει άλλα αρχεία php – προαιρετικά)
- ◦ ΦΑΚΕΛΟΣ images (φάκελος που θα περιέχει εικόνες – προαιρετικά)
ή
- myTestPlugin/
- ◦ myTestPlugin.php
- ◦ js/
- ◦ css/
- ◦ php/
- ◦ images/
Κυρίως αρχείο (δομή)
Όσοι έχετε μία κάποια οικειότητα με το WordPress θα έχετε προσέξει ότι στον τομέα των plug-ins (λίστα με τα διαθέσιμα plug-ins) παρέχονται διάφορες πληροφορίες για τα plug-ins αυτά (όνομα, έκδοση, περιγραφή, κατάσταση). Αν δεν ξέρετε ήδη πως παρέχονται αυτές οι πληροφορίες στη μηχανή του WordPress δεν θα το μαντέψετε ποτέ:
<?php /* Plugin Name: My Fiirst Plug-In Plugin URI: http://www.mypersonalsite.gr Version: v1.00 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.
Ναι! Είναι σχόλια! Με τις παραπάνω 7 γραμμές οφείλει να αρχίζει κάθε WordPress Plug-in που σέβεται τον εαυτό του.
Σχόλια; ΟΚ… Και το plug-in πότε το κατασκευάζω;
Για την δημιουργία του λειτουργικού τμήματος του plug-in απαιτείται χρήση κλάσεων PHP. Αν και η πρότερη γνώση προγραμματισμού PHP κλάσεων θα βοηθούσε πολύ, δεν θεωρείται απαραίτητη γνώση για την παρακολούθηση του παρόντος άρθρου.
Για αρχή απαιτείται να εξασφαλίσουμε ότι δεν υπάρχει άλλο plug-in με το ίδιο όνομα εγκατεστημένο στο WordPress σύστημά μας. Ο συγκεκριμένος έλεγχος επιτυγχάνεται με τον παρακάτω κώδικα:
if(!class_exists(“myTestPlugin”)) {
class myTestPlugin {
function myTestPlugin() { //κατασκευαστής
}
}
} //τέλος κλάσης
Εφόσον λοιπόν μια κλάση με όνομα ταυτόσημο με αυτό του δικού μας plug-in δεν υπάρχει, δημιουργείται.
if(class_exists(“myTestPlugin”)) {
$myPlugin = new myTestPlugin();
}
Ο παραπάνω κώδικας αναλαμβάνει να αρχικοποιήσει ένα στιγμιότυπο της κλάσης που δημιουργήσαμε νωρίτερα. Μετά την εκτέλεση του τμήματος αυτού η μεταβλητή $myPlugin αποτελεί ένα αντικειμένο τύπου myTestPlugin δήλαδή της κλάσης που υλοποιεί την λειτουργικότητα του plugin μας.
Όπως είπαμε στην αρχή του άρθρου, η αρχή είναι το ήμισυ του παντός. Με τον κώδικα που παρουσιάσαμε σε αυτό το άρθρο ο αναγνώστης καταλήγει με έναν πλήρες σκελετό ο οποίος μπορεί να χρησιμοποιηθεί για την υλοποίηση ενός εντελώς λειτουργικού plugin.
Την επόμενη φορά (spoiler alert
) θα μιλήσουμε για το πως υλοποιούμε actions και filters για αυτό, μείνετε συντονισμένοι. Μέχρι τότε…
να είστε καλά και να προσέχετε τον εαυτό σας!
[Πηγή:Devlounge]


