Ako zobraziť bočný panel programu WordPress na webových stránkach, ktoré nie sú v službe WordPress
Pri práci na poslednom projekte DevGrow Discussions som narazil na potrebu vložte celý môj WordPress bočný panel na iné stránky než WordPress - konkrétne a bbPress forum. Keďže používam rôzne widgety na zobrazovanie populárnych príspevkov a iného dynamického obsahu, jednoduché kopírovanie a vloženie kódu HTML by nestačilo. Nakoniec existujú naozaj iba dva spôsoby, ako to urobiť:
- Zahrňte svoje wp-load.php súbor v aplikácii a v skutočnosti načítať celý WordPress získať prístup k funkciám plugin
- Použite jednoduché ukladanie do vyrovnávacej pamäte na ukladanie bočného panela do formátu HTML a jeho zahrnutie do akejkoľvek inej aplikácie, potom ju znovu vytvorte podľa potreby pri zverejnení nového obsahu
Ak to nie je dosť zrejmé, prvá možnosť je veľmi nákladná z hľadiska databázových dopytov a môže výrazne spomaliť vašu stránku. Druhá možnosť si vyžaduje malé úsilie pri realizácii, no v porovnaní s výkonom neexistuje konkurencia.
Ukladanie do pamäte vášho bočného panela WordPress
Skôr než môžeme napísať svoju funkciu, musíme presne pochopiť, čo sa snažíme robiť. Naším cieľom je cache náš bočný panel do textového súboru a aktualizovať túto vyrovnávaciu pamäť vždy, keď publikujeme príspevok, zmeniť tému alebo vykonať zmeny na miniaplikáciách bočného panela. Keďže plánujeme používať našu vyrovnávaciu pamäť na zobrazenie bočného panela na inej aplikácii, musíme byť schopní bez problémov vymazať vyrovnávaciu pamäť (nechceme, aby sa naša bočná lišta zlomila kedykoľvek).
Aby sme to dosiahli efektívne, budeme tiež vytvorte si záznam našich súborov uložených v cache a použite, aby sa zistilo, či má byť vyrovnávacia pamäť vymazaná. Ak áno, skutočný súbor vyrovnávacej pamäte sa prepíše pri ďalšom návrate na stránku WordPress, pričom sa zabezpečí, aby bol správny postranný panel vždy vykreslený v oboch aplikáciách.
Vytváranie funkcií
Ak chcete začať, otvorte svoju tému functions.php a pridajte k nej nasledujúce funkcie:
cache funkcie ($ task, $ cacheFile, $ cacheTime = 21600) global $ cache; // Konfigurovať súbory a adresáre: $ cacheDir = TEMPLATEPATH. "/ Cache"; $ cacheFileName = $ cacheDir. "/ cache- $ cacheFile.txt"; $ cacheLogFile = $ cacheDir. "/ cache-log.txt"; // Vytvorte adresár cache, ak neexistuje, ak (! Is_dir ($ cacheDir)) mkdir ($ cacheDir, 0755); // Vytvorte protokol súborov vyrovnávacej pamäte s ich aktuálnym stavom, ak (file_exists ($ cacheLogFile)) $ cacheLog = neserializuje (file_get_contents ($ cacheLogFile)); iný text $ cacheLog = array (); ak ($ task == 'start') // Ak existuje cache, je staršia ako 6 hodín a nie je vo fronte na vymazanie, ponechajte ju - inak obnovte vyrovnávaciu pamäť, ak (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=>hodnota $) $ cacheLog [$ key] = 0; file_put_contents ($ cacheLogFile, serializovať ($ cacheLog));
Táto prvá funkcia, cache, je kľúčom k tomu, aby naša vyrovnávacia pamäť fungovala. V závislosti od toho, kde vo vašom súbore zavoláte, funkcia nastaví správne súbory a adresáre, overí, či je potrebné vytvoriť vyrovnávaciu pamäť a ak áno, uloží výstup a aktualizuje protokol vyrovnávacej pamäte. Funkcia využíva vyrovnávaciu pamäť výstupu PHP na uloženie akéhokoľvek HTML vygenerovaného do textového súboru.
Druhá funkcia sa používa na vyčistenie všetkých súborov vyrovnávacej pamäte a je užitočná na pridanie do existujúcich hákov WordPress. S ním môžeme urobiť tak, aby sa naša vyrovnávacia pamäť vyčistila vždy, keď sme aktualizovali tému, uložíme príspevok alebo aktualizujeme widgety na bočnom paneli pridaním nasledujúceho textu na konci functions.php:
add_action ('switch_theme', 'cache_purge', 10); add_action ('publish_post', 'cache_purge', 10); add_filter ('widget_update_callback', 'cache_purge', 10);
Úplný zoznam háčikov nájdete v referenčnom rozhraní API aplikácie WordPress.
Konfigurácia bočného panela
Teraz, keď máte pripravené funkcie, môžete začať ukladať do pamäte cache. Otvorte svoj sidebar.php a pridajte tento riadok na začiatok súboru:
Táto funkcia začne ukladať do vyrovnávacej pamäte bočný panel, ktorý potrebuje, inak nebude robiť nič. Kvôli spôsobu, akým funkcia vyrovnávacieho výstupu PHP funguje, musíme tiež zatvoriť buffer na konci súboru. Pridať tento riadok do úplného spodu toho istého súboru:
Po pridaní týchto dvoch riadkov obnovte svoj blog. V prehliadači neuvidíte nič, ale skontrolujte / cache v priečinku s motívom a mali by ste vidieť dva súbory, ktoré začínajú cache-.
Používanie vyrovnávacej pamäte
Teraz, keď ste vytvorili súbor vyrovnávacej pamäte, môžete ho použiť v ľubovoľnej aplikácii, ktorá má prístup k nej. Môžete to ľahko urobiť pomocou include_once ale rovnako som rád, že súbor existuje, len aby som bol bezpečný:
Jednoducho skontrolujte, či je správna cesta k súboru. Ak chcete nastaviť vyrovnávaciu pamäť na odstránenie z externej aplikácie, musíte ju zahrnúť cache_purge Funkcia vo vašom skripte niekde a jednoducho zavolajte, keď je to potrebné. Potom je to len otázka volania funkcie:
záver
Táto technika je naozaj užitočná pre akúkoľvek aplikáciu PHP, najmä ak chcete zobraziť dynamický obsah bez toho, aby ste museli obetovať výkon. Použite ho na urýchlenie inštalácie aplikácie WordPress alebo na používanie užitočných bitov (ako je bočný panel) na ľubovoľnej inej webovej lokalite alebo aplikácii.
Poznámka redaktora: Tento príspevok je napísaný používateľom Monjurul Dolon pre Hongkiat.com. Monjurul je dizajnér rozhrania založený na NYC a webový vývojár, freelancing jeho cestu cez život. On blogy na DevGrow.com, kde zdieľa tipy a zdroje na web vývoj a dizajn.