Kako prikazati WordPress stransko vrstico na spletnih mestih, ki niso WordPress
Medtem ko sem delal na svojem zadnjem projektu, DevGrow Discussions, sem naletel na potrebo po tem vdelam celotno WordPress stransko vrstico na spletno mesto, ki ni WordPress - posebej a bbPress forum. Ker uporabljam različne pripomočke za prikazovanje priljubljenih objav in druge dinamične vsebine, preprosto kopiranje in lepljenje HTML-ja ne bi zadostovalo. Na koncu je res samo dva načina za to:
- Vključite svoje wp-load.php datoteko v vaši aplikaciji in dejansko naložite celotno WordPress, da dobite dostop do funkcij vtičnika
- Uporabite preprosto predpomnjenje za shranjevanje stranske vrstice v obliki HTML in jo vključite v katero koli drugo aplikacijo, nato pa jo po potrebi znova izdelajte, ko bo objavljena nova vsebina
Če to ni dovolj očitno, je prva možnost zelo draga v smislu poizvedb v zbirki podatkov in lahko znatno upočasni vašo spletno stran. Druga možnost zahteva malo napora pri izvajanju, toda uspešnost ni konkurenca.
Predpomnjenje strani WordPress
Preden lahko napišemo svojo funkcijo, moramo natančno razumeti, kaj poskušamo storiti. Naš cilj je shranite v stransko vrstico v besedilno datoteko in posodobi ta predpomnilnik vsakič, ko objavimo objavo, spremenite našo temo ali spremenite pripomočke v stranski vrstici. Ker načrtujemo uporabo predpomnilnika za prikaz stranske vrstice v drugi aplikaciji, moramo imeti možnost preprostega brisanja predpomnilnika brez slabih učinkov (ne želimo, da bi bila naša stranska vrstica kadar koli zlomljena).
Da bi to učinkovito dosegli, bomo tudi ustvarite dnevnik naših predpomnjenih datotek in uporabite to, da ugotovite, ali naj se predpomnilnik počisti. Če je tako, bo dejanska datoteka predpomnilnika prepisana naslednjič, ko bo nekdo obiskal spletno mesto WordPress..
Ustvarjanje funkcij
Če želite začeti, odprite svojo temo functions.php datoteko in ji dodajte naslednje funkcije:
cache funkcije ($ task, $ cacheFile, $ cacheTime = 21600) global $ cache; // Konfiguriranje datotek in imenikov: $ cacheDir = TEMPLATEPATH. "/ Cache"; $ cacheFileName = $ cacheDir. "/ cache- $ cacheFile.txt"; $ cacheLogFile = $ cacheDir. "/ cache-log.txt"; // Naredimo imenik predpomnilnika, če ne obstaja, če (! Is_dir ($ cacheDir)) mkdir ($ cacheDir, 0755); // Izdelava dnevnika datotek predpomnilnika s trenutnim statusom (file_exists ($ cacheLogFile)) $ cacheLog = unserialize (file_get_contents ($ cacheLogFile)); else $ cacheLog = array (); if ($ task == 'start') // Če predpomnilnik obstaja, je star manj kot 6 ur in ni v čakalni vrsti za brisanje, ga obdržite - sicer obnovite predpomnilnik, če (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=>$ value) $ cacheLog [$ key] = 0; file_put_contents ($ cacheLogFile, serialize ($ cacheLog));
Ti prvi delujejo, predpomnilnik, je ključ do dela našega predpomnilnika. Glede na to, kje v datoteki jo kličete, bo funkcija nastavila pravilne datoteke in imenike, preverila, ali je predpomnilnik treba izdelati in če je tako, bo shranil izhodne podatke in posodobil dnevnik predpomnilnika. Funkcija uporablja izhodno pufersko datoteko PHP za shranjevanje HTML-ja, ustvarjenega v besedilno datoteko.
Druga funkcija se uporablja za odstranitev vseh predpomnilnikov in je uporabna za dodajanje obstoječim kavljem WordPressa. Z njim lahko naredimo, da se bo naš predpomnilnik izbrisal vsakič, ko bo naša tema posodobljena, objava bo shranjena ali bodo naši pripomočki v stranski vrstici posodobljeni tako, da bodo na koncu functions.php:
add_action ('switch_theme', 'cache_purge', 10); add_action ('publishing_post', 'cache_purge', 10); add_filter ('widget_update_callback', 'cache_purge', 10);
Za celoten seznam kljuk, si oglejte WordPress Plugin API Reference.
Konfiguriranje stranske vrstice
Zdaj, ko so funkcije pripravljene, lahko začnete predpomniti svojo stransko vrstico. Odpri svoje sidebar.php in dodajte to vrstico na začetek datoteke:
Ta funkcija bo začela predpomniti stransko vrstico, ki jo potrebuje, sicer ne bo storila ničesar. Zaradi načina delovanja funkcije izhodnega puferskega shranjevanja moramo tudi zapreti medpomnilnik na koncu datoteke. Dodajte to vrstico na dno iste datoteke:
Ko dodate dve vrstici, osvežite svoj spletni dnevnik. V brskalniku ne boste videli ničesar, ampak preverite /predpomnilnik imenika v mapi s temo in videli boste dve datoteki, ki se začnejo z predpomnilnik-.
Uporaba predpomnilnika
Zdaj, ko ste ustvarili datoteko predpomnilnika, jo lahko uporabite v kateri koli aplikaciji, ki ima dostop do nje. To lahko preprosto storite z uporabo include_once funkcijo, ampak tudi, da sem prepričan, da datoteka obstaja, samo da bi bila varna:
Samo preverite, ali je pot do datoteke pravilna. Če želite nastavitev predpomnilnika izbrisati iz zunanje aplikacije, morate vključiti cache_purge nekje v skriptu in jo po potrebi pokličite. Po tem je preprosto vprašanje klicanja funkcije:
Zaključek
Ta tehnika je zelo uporabna za katero koli aplikacijo PHP, še posebej, če želite prikazati dinamično vsebino, ne da bi morali žrtvovati učinkovitost. Uporabite ga za pospešitev namestitve WordPressa ali za uporabo koristnih bitov (kot je stranska vrstica) na kateri koli drugi spletni strani ali aplikaciji.
Opomba urednika: To objavo je napisal Monjurul Dolon za Hongkiat.com. Monjurul je oblikovalec vmesnika in spletni razvijalec, ki temelji na NYC, in se spoprijema z življenjem. On blogs na DevGrow.com, kjer je delil nasvete in vire za razvoj spletnih strani in oblikovanja.