Come visualizzare la barra laterale di WordPress su siti Web non WordPress
Mentre lavoravo al mio ultimo progetto, DevGrow Discussions, mi sono imbattuto nel bisogno di farlo incorporare la mia intera barra laterale di WordPress su un sito non WordPress - in particolare a bbPress forum. Dato che utilizzo vari widget per visualizzare post popolari e altri contenuti dinamici, copiare e incollare l'HTML non è sufficiente. Alla fine, ci sono davvero solo due modi per farlo:
- Includi il tuo wp-load.php file nella tua applicazione e in effetti carica la totalità di WordPress per accedere alle funzioni del plugin
- Utilizzare la memorizzazione nella cache semplice per memorizzare la barra laterale in formato HTML e includerla in qualsiasi altra applicazione, quindi ricostruirla secondo necessità quando viene pubblicato un nuovo contenuto
Se non è abbastanza ovvio, la prima opzione è molto costosa in termini di query di database e può rallentare in modo significativo il tuo sito. La seconda opzione richiede un piccolo sforzo nell'implementazione, ma le prestazioni non ci sono concorrenza.
Memorizzazione nella cache della barra laterale di WordPress
Prima di poter scrivere la nostra funzione, dobbiamo capire esattamente cosa stiamo cercando di fare. Il nostro obiettivo è quello di archivia la nostra barra laterale in un file di testo e aggiorna quella cache ogni volta che pubblichiamo un post, cambia il nostro tema o apporta modifiche ai widget della barra laterale. Poiché stiamo pianificando di utilizzare la nostra cache per visualizzare la barra laterale su un'altra applicazione, dobbiamo essere in grado di eliminare facilmente la cache senza effetti negativi (non vogliamo che la nostra barra laterale venga interrotta in qualsiasi momento).
Per farlo in modo efficiente, lo faremo anche noi crea un registro dei nostri file memorizzati nella cache e usalo per determinare se la cache deve essere cancellata. In questo caso, il file cache effettivo verrà sovrascritto la prossima volta che qualcuno visiterà il sito WordPress, assicurando che una barra laterale corretta sia sempre visualizzata su entrambe le applicazioni.
Creazione delle funzioni
Per iniziare, apri il tema functions.php file e aggiungere le seguenti funzioni ad esso:
cache delle funzioni ($ task, $ cacheFile, $ cacheTime = 21600) global $ cache; // Configura file e directory: $ cacheDir = TEMPLATEPATH. "/ Cache"; $ cacheFileName = $ cacheDir. "/ cache- $ cacheFile.txt"; $ cacheLogFile = $ cacheDir. "/ cache-log.txt"; // Crea una directory cache se non esiste se (! Is_dir ($ cacheDir)) mkdir ($ cacheDir, 0755); // Crea un log dei file della cache con il loro stato corrente if (file_exists ($ cacheLogFile)) $ cacheLog = unserialize (file_get_contents ($ cacheLogFile)); else $ cacheLog = array (); if ($ task == 'start') // Se la cache esiste, ha meno di 6 ore e non è nella coda di eliminazione, tienilo - altrimenti ricostruisci la cache se (file_exists ($ cacheFileName) && (time () - filemtime ($ 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=>$ valore) $ cacheLog [$ key] = 0; file_put_contents ($ cacheLogFile, serializzare ($ cacheLog));
Questa prima funzione, nascondiglio, è la chiave per far funzionare la nostra cache. A seconda di dove si trova nel file, la funzione imposterà i file e le directory corretti, verificherà la necessità di creare una cache e, in caso affermativo, salverà l'output e aggiornerà il log della cache. La funzione utilizza il buffer di output di PHP per salvare qualsiasi HTML generato in un file di testo.
La seconda funzione è utilizzata per eliminare tutti i file di cache ed è utile per l'aggiunta agli hook di WordPress esistenti. Con esso, possiamo fare in modo che la nostra cache sia cancellata ogni volta che il tema viene aggiornato, un post viene salvato o i nostri widget della barra laterale vengono aggiornati aggiungendo quanto segue alla fine di functions.php:
add_action ('switch_theme', 'cache_purge', 10); add_action ('publish_post', 'cache_purge', 10); add_filter ('widget_update_callback', 'cache_purge', 10);
Per un elenco completo degli hook, consulta il riferimento dell'API del plug-in WordPress.
Configurazione della sidebar
Ora che hai le funzioni pronte, puoi iniziare a memorizzare nella cache la tua barra laterale. Apri il tuo sidebar.php e aggiungi questa riga all'inizio del file:
Questa funzione inizierà a memorizzare nella cache la barra laterale di cui ha bisogno, altrimenti non farà nulla. A causa del modo in cui funziona la funzione di buffer di output PHP, dobbiamo anche chiudere il buffer alla fine del file. Aggiungi questa linea fino in fondo allo stesso file:
Dopo aver aggiunto queste due linee, aggiorna il tuo blog. Non vedrai nulla nel tuo browser, ma controlla il / cache directory nella cartella del tema e dovresti vedere due file che iniziano con nascondiglio-.
Usando la tua cache
Ora che hai creato il tuo file cache, puoi usarlo in qualsiasi applicazione che abbia accesso ad esso. Puoi farlo facilmente usando il include_once funzione ma mi piace anche assicurarmi che il file esista, giusto per essere sicuro:
Assicurati di ricontrollare che il percorso del file sia corretto. Se si desidera impostare la cache per eliminare da un'applicazione esterna, è necessario includere il cache_purge funzione nel tuo script da qualche parte e chiamalo semplicemente quando necessario. Dopodiché si tratta semplicemente di chiamare la funzione:
Conclusione
Questa tecnica è davvero utile per qualsiasi applicazione PHP, specialmente quando si desidera visualizzare contenuti dinamici senza dover sacrificare le prestazioni. Usalo per accelerare l'installazione di WordPress o essere in grado di utilizzare bit utili (come la barra laterale) su qualsiasi altro sito Web o applicazione.
Nota dell'editore: Questo post è scritto da Monjurul Dolon per Hongkiat.com. Monjurul è un designer di interfacce e sviluppatore web basato a New York, che si sta facendo strada liberamente attraverso la vita. Scrive su DevGrow.com, dove condivide consigli e risorse sullo sviluppo e la progettazione del web.