Kaip rodyti WordPress šoninę juostą ne „WordPress“ svetainėse
Dirbdamas mano naujausiu projektu, „DevGrow“ diskusijos, aš atėjau į poreikį įterpti visą „WordPress“ šoninę juostą ne „WordPress“ svetainėje - konkrečiai a bbPress forumas. Kadangi naudoju įvairius valdiklius, kad būtų rodomi populiarūs įrašai ir kitas dinamiškas turinys, paprasčiausiai nepakanka kopijuoti ir įklijuoti HTML. Galų gale yra tik du būdai, kaip tai padaryti:
- Įtraukite savo wp-load.php failas jūsų programoje ir iš tikrųjų įkelia visą „WordPress“, kad gautumėte prieigą prie papildinių funkcijų
- Naudokite paprastą talpyklą, kad išsaugotumėte šoninę juostą HTML formatu ir įtrauktumėte ją į bet kurią kitą taikomąją programą, tada atkurkite ją, kai reikia, kai skelbiamas naujas turinys
Jei tai nėra pakankamai akivaizdi, pirmasis variantas yra labai brangus duomenų bazės užklausų požiūriu ir gali žymiai sulėtinti jūsų svetainę. Antrasis variantas reikalauja mažai pastangų įgyvendinant, tačiau našumas nėra konkurencingas.
„WordPress“ šoninės juostos talpinimas
Prieš rašydami savo funkciją, turime tiksliai suprasti, ką mes bandome daryti. Mūsų tikslas yra talpinkite mūsų šoninę juostą į tekstinį failą ir atnaujinti šią talpyklą, kai skelbsime pranešimą, pakeisti mūsų temą arba keisti šoninės juostos valdiklius. Kadangi planuojame naudoti mūsų talpyklą, kad būtų rodoma šoninė juosta kitoje programoje, turime sugebėti lengvai ištrinti talpyklą be jokių blogų efektų (mes nenorime, kad mūsų šoninė juosta būtų sugadinta bet kuriuo metu).
Kad tai įvykdytume efektyviai, mes taip pat sukurkite mūsų saugomų failų žurnalą ir naudokite, kad nustatytumėte, ar talpykla turi būti išvalyta. Jei taip, kitą kartą, kai kas nors aplankys „WordPress“ svetainę, faktinis talpyklos failas bus perrašytas, užtikrinant, kad abiejose programose visada būtų pateikta tinkama šoninė juosta.
Funkcijų kūrimas
Norėdami pradėti, atverkite savo temą funkcijos.php failą ir pridėkite šias funkcijas:
funkcijų talpykla ($ task, $ cacheFile, $ cacheTime = 21600) global $ cache; // Konfigūruoti failus ir katalogus: $ cacheDir = TEMPLATEPATH. "/ Cache"; $ cacheFileName = $ cacheDir. "/ cache- $ cacheFile.txt"; $ cacheLogFile = $ cacheDir. "/ cache-log.txt"; // Padarykite talpyklos katalogą, jei jis neegzistuoja, jei (! Is_dir ($ cacheDir)) mkdir ($ cacheDir, 0755); // Padarykite talpyklų failų žurnalą su jų esama būsena, jei (file_exists ($ cacheLogFile)) $ cacheLog = unserialize (file_get_contents ($ cacheLogFile)); other $ cacheLog = masyvas (); jei ($ task == 'start') // Jei yra talpykla, ji yra mažesnė nei 6 valandos ir nėra ištrynimo eilėje, laikykite ją - kitaip atstatykite talpyklą, jei (file_exists ($ cacheFileName) && (laikas () - 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));
Tai pirmoji funkcija, talpyklą, yra raktas į mūsų talpyklos darbą. Priklausomai nuo to, kur faile skambinate, funkcija sukurs teisingus failus ir katalogus, patikrins, ar reikia sukurti talpyklą, ir jei taip, išsaugos išvestį ir atnaujins talpyklos žurnalą. Funkcija naudoja PHP išvesties buferį, kad išsaugotų bet kokį HTML failą, sukurtą į tekstinį failą.
Antroji funkcija naudojama išvalyti visus talpyklos failus ir yra naudinga pridedant esamus „WordPress“ kabliukus. Su juo mes galime padaryti, kad mūsų talpykla būtų išvalyta kiekvieną kartą, kai atnaujinama tema, skelbimas išsaugomas arba mūsų šoninės juostos valdikliai atnaujinami pridedant šiuos dalykus funkcijos.php:
add_action ('switch_theme', 'cache_purge', 10); add_action ('Publ_post', 'cache_purge', 10); add_filter ('widget_update_callback', 'cache_purge', 10);
Norėdami sužinoti visą kablių sąrašą, patikrinkite „WordPress“ papildinio API nuorodą.
„Sidebar“ konfigūravimas
Dabar, kai jau esate pasiruošę, galite pradėti šoninės juostos talpyklą. Atidarykite savo sidebar.php ir pridėkite šią eilutę prie failo pradžios:
Ši funkcija pradės talpinti šoninę juostą, kurią ji turi, kitaip ji nieko nedarys. Kadangi veikia PHP išėjimo buferinė funkcija, taip pat turime uždaryti buferį failo pabaigoje. Pridėkite šią eilutę prie to paties failo apačios:
Pridėję šias dvi eilutes, atnaujinkite savo dienoraštį. Jūsų naršyklėje nieko nematysite, bet patikrinkite / talpykla katalogą teminiame aplanke ir turėtumėte matyti du failus, pradedant nuo talpyklą-.
„Cache“ naudojimas
Dabar, kai sukūrėte talpyklos failą, galite jį naudoti bet kurioje programoje, turinčioje prieigą prie jos. Jūs galite lengvai tai padaryti naudodami include_once funkcija, bet taip pat norėčiau įsitikinti, kad failas egzistuoja, kad būtų saugus:
Būtinai patikrinkite, ar failo kelias yra teisingas. Jei norite, kad talpykla būtų ištrinta iš išorinės programos, turėsite įtraukti cache_purge savo scenarijaus veikimas kažkur ir paprasčiausiai skambinkite, kai tai yra būtina. Po to paprasčiausiai reikia paskambinti:
Išvada
Šis metodas yra tikrai naudingas bet kuriai PHP programai, ypač kai norite rodyti dinamišką turinį neprarandant našumo. Naudokite ją paspartinti „WordPress“ diegimą arba naudokite naudingus bitus (pvz., Šoninę juostą) bet kurioje kitoje svetainėje ar programoje.
Redaktoriaus pastaba: Šį įrašą parašė Monjurul Dolon už Hongkiat.com. „Monjurul“ yra NYC sąsajos dizaineris ir interneto kūrėjas, laisvai samdantis savo gyvenimą. Jis tinklaraštyje „DevGrow.com“, kur dalijasi patarimais ir ištekliais apie interneto kūrimą ir dizainą.