WordPressi külgriba näitamine mitte-WordPressi veebisaitidel
Töötades oma viimases projektis, DevGrow'i aruteludes, tuli mul vajadus manustada kogu WordPressi külgriba mitte WordPressi saidile - konkreetselt a bbPress foorum. Kuna ma kasutan erinevaid vidinaid populaarsete postituste ja muu dünaamilise sisu kuvamiseks, ei piisa lihtsalt HTML-i kopeerimisest ja kleepimisest. Lõpuks on tõesti ainult kaks võimalust selle kohta edasi minna:
- Kaasa oma wp-load.php fail oma rakenduses ja tegelikult koormus kogu WordPress, et saada juurdepääs plugina funktsioonidele
- Kasutage lihtsat vahemälu, et salvestada külgriba HTML-vormingus ja lisada see mõnda muusse rakendusse, seejärel ehita see vajadusel uuesti üles, kui uus sisu on avaldatud
Kui see ei ole piisavalt selge, on esimene valik andmebaasi päringute puhul väga kulukas ja võib teie saiti oluliselt vähendada. Teine võimalus nõuab rakendamisel vähe jõupingutusi, kuid tulemuslikkus ei ole konkurents.
WordPressi külgriba vahemällu salvestamine
Enne kui saame oma funktsiooni kirjutada, peame mõistma, mida me püüame teha. Meie eesmärk on vahemälu meie külgriba tekstifaili ja värskendage seda vahemälu postituse avaldamisel, muuta meie teemat või muuta külgriba vidinaid. Kuna me plaanime kasutada vahemälu külgriba kuvamiseks teises rakenduses, peame suutma vahemälu kergesti kustutada ilma halbade efektideta (me ei taha, et meie külgriba oleks igal ajal purunenud).
Selleks, et seda tõhusalt saavutada, ka me looge meie puhverdatud failide logi ja kasutage seda, et määrata, kas vahemälu tuleb kustutada. Kui see on nii, kirjutatakse tegelik vahemälu fail järgmisel korral, kui keegi külastab WordPressi saiti, tagades, et mõlemal rakendusel on alati korrektne külgriba.
Funktsioonide loomine
Alustamiseks avage oma teema funktsioonid.php faili ja lisage sellele järgmised funktsioonid:
funktsiooni vahemälu ($ task, $ cacheFile, $ cacheTime = 21600) global $ cache; // Failide ja kataloogide seadistamine: $ cacheDir = TEMPLATEPATH. "/ Cache"; $ cacheFileName = $ cacheDir. "/ cache- $ cacheFile.txt"; $ cacheLogFile = $ cacheDir. "/ cache-log.txt"; // Tee vahemälu kataloog, kui seda ei ole, kui (! Is_dir ($ cacheDir)) mkdir ($ cacheDir, 0755); // Looge vahemälufailide logi praeguse olekuga, kui (file_exists ($ cacheLogFile)) $ cacheLog = unserialize (file_get_contents ($ cacheLogFile)); veel $ cacheLog = array (); kui ($ task == 'start') // Kui vahemälu on olemas, on see vähem kui 6 tundi vana ja ei ole kustutamisjärjekorda, hoidke seda - muidu taastage vahemälu, kui (file_exists ($ cacheFileName) && (aeg () - 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));
Need esimesed funktsioonid, vahemälu, on võti meie vahemälu töötamiseks. Sõltuvalt sellest, kus teie failis seda nimetate, määrab funktsioon õiged failid ja kataloogid, kontrollib, et vahemälu tuleb ehitada ja kui see on nii, salvestab väljund ja uuendab vahemälu logi. Funktsioon kasutab PHP-i väljundpuhvrit mis tahes HTML-faili salvestamiseks tekstifaili.
Teist funktsiooni kasutatakse kõigi vahemälufailide puhastamiseks ja see on kasulik olemasolevate WordPressi konksude lisamiseks. Selle abil saame seda teha nii, et meie vahemälu kustutatakse iga kord, kui meie teema värskendatakse, postitus salvestatakse või meie külgriba vidinaid uuendatakse, lisades järgmised elemendid: funktsioonid.php:
add_action ('switch_theme', 'cache_purge', 10); add_action ('publitse_post', 'cache_purge', 10); add_filter ('widget_update_callback', 'cache_purge', 10);
Konksude täieliku nimekirja saamiseks vaadake WordPress Plugin API viiteid.
Külgriba seadistamine
Nüüd, kui teil on funktsioonid valmis, võite alustada oma külgriba vahemällu salvestamist. Avage oma sidebar.php ja lisage see rida faili algusesse:
See funktsioon käivitab vajaliku külgriba vahemällu, vastasel juhul ei tee see midagi. Kuna PHP väljundi puhverfunktsioon toimib, peame ka sulgema puhvri ka faili lõpus. Lisage see rida sama faili põhjasse:
Kui olete need kaks rida lisanud, värskendage oma blogi. Sa ei näe brauseris midagi, kuid kontrollige / vahemälu Teema kausta kataloog ja te peaksite nägema kahte faili alates vahemälu-.
Vahemälu kasutamine
Nüüd, kui olete oma vahemälu faili loonud, saate seda kasutada mis tahes rakenduses, millel on juurdepääs sellele. Seda saab hõlpsasti teha include_once funktsiooni, kuid mulle meeldib ka kindel olla, et fail on ohutu:
Lihtsalt kontrollige kindlasti, et faili tee oleks õige. Kui soovite määrata vahemälu välise rakenduse kustutamiseks, peate lisama selle cache_purge funktsiooni oma skriptis kusagil ja helistage seda alati, kui see on vajalik. Pärast seda lihtsalt funktsiooni helistamine:
Järeldus
See meetod on tõesti kasulik iga PHP rakenduse jaoks, eriti kui soovite kuvada dünaamilist sisu, ilma et peaksite tulemust ohverdama. Kasutage seda, et kiirendada WordPressi installimist või kasutada mõnda muud veebisaiti või rakendust kasulikke bitte (nagu külgriba).
Toimetaja märkus: See postitus on kirjutatud Monjurul Dolon Hongkiat.com jaoks. Monjurul on NYC-põhine kasutajaliidese disainer ja veebiarendaja, kes töötab läbi elu. Ta blogib aadressil DevGrow.com, kus ta jagab näpunäiteid ja vahendeid veebiarenduse ja disaini kohta.