Πώς να εμφανίσετε την πλευρική εργαλειοθήκη WordPress σε ιστοσελίδες που δεν ανήκουν στο WordPress
Ενώ εργαζόμουν στο τελευταίο μου έργο, DevGrow Discussions, αντιμετώπισα την ανάγκη ενσωματώστε ολόκληρη την πλαϊνή γραμμή του WordPress σε έναν ιστότοπο που δεν ανήκει στο WordPress - συγκεκριμένα α bbPress φόρουμ. Εφόσον χρησιμοποιώ διάφορα widget για την εμφάνιση δημοφιλών αναρτήσεων και άλλου δυναμικού περιεχομένου, η απλή αντιγραφή και επικόλληση της HTML δεν αρκεί. Στο τέλος, υπάρχουν πραγματικά μόνο δύο τρόποι να προχωρήσουμε σε αυτό:
- Συμπεριλάβετε το δικό σας wp-load.php αρχείο στην εφαρμογή σας και στην πραγματικότητα φορτώσετε το σύνολο του WordPress για να αποκτήσετε πρόσβαση στις λειτουργίες του plugin
- Χρησιμοποιήστε απλή αποθήκευση στην προσωρινή μνήμη για να αποθηκεύσετε την πλαϊνή γραμμή σε μορφή HTML και να την συμπεριλάβετε σε οποιαδήποτε άλλη εφαρμογή και, στη συνέχεια, να την ανοικοδομήσετε όπως είναι απαραίτητο όταν δημοσιεύεται νέο περιεχόμενο
Εάν δεν είναι αρκετά προφανές, η πρώτη επιλογή είναι πολύ δαπανηρή όσον αφορά τα ερωτήματα βάσης δεδομένων και μπορεί να επιβραδύνει σημαντικά την περιοχή σας. Η δεύτερη επιλογή απαιτεί λίγη προσπάθεια στην υλοποίηση, αλλά η απόδοση δεν είναι ανταγωνισμός.
Αποθηκεύστε προσωρινά την πλαϊνή σας μπάρα WordPress
Πριν μπορέσουμε να γράψουμε τη λειτουργία μας, πρέπει να καταλάβουμε τι ακριβώς προσπαθούμε να κάνουμε. Στόχος μας είναι να cache της πλευρικής μας γραμμής σε ένα αρχείο κειμένου και ενημερώστε την προσωρινή μνήμη όποτε δημοσιεύουμε μια ανάρτηση, να αλλάξουμε το θέμα μας ή να κάνουμε αλλαγές στα widgets της πλαϊνής γραμμής. Δεδομένου ότι σχεδιάζουμε να χρησιμοποιήσουμε τη μνήμη cache για να εμφανίσουμε την πλαϊνή μπάρα σε μια διαφορετική εφαρμογή, πρέπει να είμαστε σε θέση να διαγράψουμε εύκολα την προσωρινή μνήμη χωρίς κακόβουλα αποτελέσματα (δεν θέλουμε να σπάσει η πλευρική μας γραμμή ανά πάσα στιγμή).
Για να το επιτύχουμε αποτελεσματικά, θα το κάνουμε επίσης δημιουργήστε ένα αρχείο καταγραφής των αποθηκευμένων αρχείων μας και χρησιμοποιήστε το για να καθορίσετε εάν η κρυφή μνήμη πρέπει να διαγραφεί. Αν ναι, το πραγματικό αρχείο προσωρινής μνήμης θα αντικατασταθεί την επόμενη φορά που κάποιος επισκέπτεται τον ιστότοπο WordPress, εξασφαλίζοντας ότι η κατάλληλη πλαϊνή γραμμή παρέχεται πάντα και στις δύο εφαρμογές.
Δημιουργία των λειτουργιών
Για να ξεκινήσετε, ανοίξτε το θέμα σας functions.php και προσθέστε τις ακόλουθες λειτουργίες:
cache λειτουργίας ($ task, $ cacheFile, $ cacheTime = 21600) global $ cache; // Διαμόρφωση αρχείων και καταλόγων: $ cacheDir = TEMPLATEPATH. "/ Cache"; $ cacheFileName = $ cacheDir. "/ cache- $ cacheFile.txt"; $ cacheLogFile = $ cacheDir. "/ cache-log.txt"; // Δημιουργία καταλόγου cache αν δεν υπάρχει αν (! Is_dir ($ cacheDir)) mkdir ($ cacheDir, 0755); // Δημιουργία καταγραφής των αρχείων προσωρινής μνήμης με την τρέχουσα κατάστασή τους αν (file_exists ($ cacheLogFile)) $ cacheLog = unserialize (file_get_contents ($ cacheLogFile))? αλλιώς $ cacheLog = array (); εάν ($ task == 'start') // Εάν υπάρχει προσωρινή μνήμη, είναι λιγότερο από 6 ώρες και δεν βρίσκεται σε ουρά διαγραφής, διατηρήστε την - διαφορετικά ανοικοδομήστε την προσωρινή μνήμη if (file_exists ($ cacheFileName) && (time () ($ cacheFileName)) < $cacheTime && $cacheLog[$cacheFile] == 1) $cache = false; else $cache = true; ob_start(); elseif($task == 'end' && $cache) // If caching, save file contents and update log file_put_contents($cacheFileName,ob_get_contents()); ob_end_flush(); $cacheLog[$cacheFile] = 1; file_put_contents($cacheLogFile,serialize($cacheLog)); elseif($task == 'purge') // Set cache to delete and update log $cacheLog[$cacheFile] = 0; file_put_contents($cacheLogFile,serialize($cacheLog)); function cache_purge() $cacheDir = TEMPLATEPATH."/cache"; $cacheLogFile = $cacheDir."/cache-log.txt"; if(file_exists($cacheLogFile)) $cacheLog = unserialize(file_get_contents($cacheLogFile)); else $cacheLog = array(); foreach($cacheLog as $key=>$ αξία) $ cacheLog [$ κλειδί] = 0; file_put_contents ($ cacheLogFile, σειριοποίηση ($ cacheLog));
Αυτή η πρώτη λειτουργία, κρύπτη, είναι το κλειδί για να λειτουργήσει η μνήμη cache. Ανάλογα με το πού στο αρχείο σας το ονομάζετε, η λειτουργία θα ρυθμίσει τα σωστά αρχεία και τους καταλόγους, θα επιβεβαιώσει ότι θα πρέπει να δημιουργηθεί μια προσωρινή μνήμη και, εάν ναι, θα αποθηκεύσει την έξοδο και θα ενημερώσει το αρχείο καταγραφής προσωρινής μνήμης. Η λειτουργία χρησιμοποιεί την προσωρινή μνήμη εξόδου της PHP για να αποθηκεύσει οποιαδήποτε HTML που δημιουργήθηκε σε ένα αρχείο κειμένου.
Η δεύτερη λειτουργία χρησιμοποιείται για την εκκαθάριση όλων των αρχείων cache και είναι χρήσιμη για την προσθήκη σε υπάρχοντα άγκιστρα του WordPress. Με αυτό, μπορούμε να το κάνουμε έτσι ώστε η μνήμη cache μας να καθαρίζεται κάθε φορά που το θέμα μας ενημερώνεται, αποθηκεύεται μια ανάρτηση ή ενημερώνονται τα widgets της πλαϊνής γραμμής με την προσθήκη των παρακάτω στο τέλος functions.php:
add_action ('switch_theme', 'cache_purge', 10). add_action ('publish_post', 'cache_purge', 10). add_filter ('widget_update_callback', 'cache_purge', 10).
Για μια πλήρη λίστα με άγκιστρα, ελέγξτε την αναφορά API του WordPress Plugin.
Ρύθμιση πλευρικής γραμμής
Τώρα που έχετε τις λειτουργίες έτοιμες, μπορείτε να ξεκινήσετε την προσωρινή αποθήκευση της πλευρικής σας γραμμής. Ανοίξτε το sidebar.php και προσθέστε αυτήν την γραμμή στην αρχή του αρχείου:
Αυτή η λειτουργία θα ξεκινήσει την προσωρινή αποθήκευση της πλευρικής γραμμής που χρειάζεται, διαφορετικά δεν θα κάνει τίποτα. Λόγω του τρόπου λειτουργίας της συνάρτησης buffering εξόδου PHP, πρέπει επίσης να κλείσουμε το buffer στο τέλος του αρχείου. Προσθέστε αυτή τη γραμμή στο κάτω μέρος του ίδιου αρχείου:
Αφού προσθέσετε αυτές τις δύο γραμμές, ανανεώστε το ιστολόγιό σας. Δεν θα δείτε τίποτα στο πρόγραμμα περιήγησης, αλλά ελέγξτε το /κρύπτη στον φάκελο θεμάτων και θα πρέπει να δείτε δύο αρχεία που αρχίζουν με κρύπτη-.
Χρησιμοποιώντας την κρυφή μνήμη
Τώρα που έχετε δημιουργήσει το αρχείο προσωρινής μνήμης, μπορείτε να το χρησιμοποιήσετε σε οποιαδήποτε εφαρμογή που έχει πρόσβαση σε αυτό. Μπορείτε να το κάνετε εύκολα χρησιμοποιώντας το include_once αλλά θέλω επίσης να είμαι σίγουρος ότι το αρχείο υπάρχει, για να είναι ασφαλές:
Απλά βεβαιωθείτε ότι έχετε ελέγξει διπλά ότι η διαδρομή του αρχείου σας είναι σωστή. Αν θέλετε να ορίσετε τη μνήμη cache για να διαγράψετε από μια εξωτερική εφαρμογή, θα πρέπει να συμπεριλάβετε το cache_purge λειτουργία στο σενάριό σας κάπου και απλά να το καλέσετε όποτε χρειάζεται. Μετά απ 'αυτό πρόκειται απλώς για να καλέσετε τη λειτουργία:
συμπέρασμα
Αυτή η τεχνική είναι πραγματικά χρήσιμη για οποιαδήποτε εφαρμογή PHP, ειδικά όταν θέλετε να εμφανίσετε δυναμικό περιεχόμενο χωρίς να χρειάζεται να θυσιάσετε την απόδοση. Χρησιμοποιήστε το για να επιταχύνετε την εγκατάσταση του WordPress ή να μπορείτε να χρησιμοποιείτε χρήσιμα bits (όπως την πλαϊνή μπάρα) σε οποιονδήποτε άλλο ιστότοπο ή εφαρμογή.
Σημείωση του συντάκτη: Αυτή η ανάρτηση είναι γραμμένη από Monjurul Dolon για το Hongkiat.com. Ο Monjurul είναι σχεδιαστής διασυνδέσεων με βάση το NYC και προγραμματιστής ιστού, διαθέτοντας ελεύθερο το δρόμο του στη ζωή. Τα blogs στο DevGrow.com, όπου μοιράζεται συμβουλές και πόρους για την ανάπτυξη και το σχεδιασμό ιστοσελίδων.