Homepage » WordPress » A WordPress oldalsáv megjelenítése a nem WordPress webhelyeken

    A WordPress oldalsáv megjelenítése a nem WordPress webhelyeken

    A legutóbbi projektem, a DevGrow Discussions munkája során találkoztam vele beágyazza a teljes WordPress oldalsávot egy nem WordPress webhelyre - kifejezetten a bbPress fórum. Mivel különböző widgeteket használok a népszerű üzenetek és más dinamikus tartalmak megjelenítéséhez, a HTML-kódok egyszerűen másolása és beillesztése nem elegendő. Végül valóban csak kétféleképpen lehet ezt megtenni:

    1. Tartalmazza a wp-load.php fájlja az alkalmazásban, és ténylegesen betölti a WordPress teljes részét, hogy hozzáférjen a plugin funkciókhoz
    2. Egyszerű gyorsítótárazással tárolhatja az oldalsávot HTML formátumban, és bármely más alkalmazásba is beillesztheti, majd új tartalmak közzétételekor szükség esetén újraépítheti azt

    Ha ez nem elég nyilvánvaló, az első lehetőség nagyon költséges az adatbázis lekérdezések szempontjából, és jelentősen lelassíthatja webhelyét. A második lehetőség kevés végrehajtást igényel a megvalósításban, de a teljesítmény bölcs, nincs verseny.

    A WordPress oldalsáv gyorsítótárazása

    Mielőtt meg tudnánk írni a funkciónkat, pontosan meg kell értenünk, hogy mit akarunk csinálni. Célunk, hogy Gyorsítótárazza az oldalsávot egy szövegfájlhoz és frissítse a gyorsítótárat, amikor közzétesz egy bejegyzést, változtassa meg a témát, vagy módosítsa az oldalsáv-widgeteket. Mivel azt tervezzük, hogy gyorsítótárunkat egy másik alkalmazáson megjelenítjük az oldalsáv megjelenítéséhez, lehetővé kell tennünk, hogy a gyorsítótárat könnyen eltávolíthassuk rosszindulatú hatások nélkül (nem akarjuk, hogy a sávunk bármikor megszakadjon).

    Ahhoz, hogy ezt hatékonyan elérjük, mi is hozzon létre naplót a gyorsítótárazott fájlokról és használhatja azt, hogy meghatározza-e a gyorsítótár törlését. Ha igen, akkor a tényleges gyorsítótár-fájl felülíródik a következő alkalommal, amikor valaki meglátogatja a WordPress webhelyet, biztosítva ezzel, hogy mindkét alkalmazásban mindig megfelelő sáv található.

    A funkciók létrehozása

    A kezdéshez nyisd meg a témádat functions.php fájlba és hozzáadja a következő funkciókat:

     funkció gyorsítótár ($ task, $ cacheFile, $ cacheTime = 21600) global $ cache; // Fájlok és könyvtárak konfigurálása: $ cacheDir = TEMPLATEPATH. "/ Cache"; $ cacheFileName = $ cacheDir. "/ cache- $ cacheFile.txt"; $ cacheLogFile = $ cacheDir. "/ cache-log.txt"; // Gyorsítótár-könyvtár, ha nem létezik, ha (! Is_dir ($ cacheDir)) mkdir ($ cacheDir, 0755); // Készítsen naplót a gyorsítótárfájlokról az aktuális állapotukkal, ha (file_exists ($ cacheLogFile)) $ cacheLog = unserialize (file_get_contents ($ cacheLogFile)); más $ cacheLog = tömb (); ha ($ task == 'start') // Ha gyorsítótár létezik, kevesebb, mint 6 óra, és nincs törlési sorban, akkor tartsa meg - egyébként újraépítse a gyorsítótárat, ha (file_exists ($ cacheFileName) && (idő () - 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, sorosításához ($ cacheLog));  

    Ezek az első funkció, cache, a kulcs a gyorsítótár használatához. Attól függően, hogy melyik fájlban hívja meg, a függvény beállítja a helyes fájlokat és könyvtárakat, ellenőrzi, hogy a gyorsítótárat ki kell-e építeni, és ha igen, menteni fogja a kimenetet, és frissíti a gyorsítótár-naplót. A függvény a PHP kimeneti pufferelését használja a szövegfájlban létrehozott HTML mentéséhez.

    A második funkció az összes cache-fájl törlésére szolgál, és hasznos a meglévő WordPress-horgok hozzáadásához. Ezzel megtehetjük, hogy a gyorsítótárunk minden alkalommal frissüljön, amikor egy témát frissítünk, egy bejegyzést elmentünk, vagy az oldalsáv-widgeteket frissítjük a következő adatok hozzáadásával: functions.php:

     add_action ('switch_theme', 'cache_purge', 10); add_action ('public_post', 'cache_purge', 10); add_filter ('widget_update_callback', 'cache_purge', 10); 

    A horgok teljes listáját a WordPress bővítmény API-hivatkozásában találhatja meg.

    Az oldalsáv beállítása

    Most, hogy készen áll a funkciók, elkezdheti az oldalsáv gyorsítótárazását. Nyisd ki sidebar.php és adja hozzá ezt a sort a fájl elejéhez:

      

    Ez a funkció elindítja a szükséges oldalsáv gyorsítótárazását, különben nem tesz semmit. Mivel a PHP kimeneti puffer funkció működik, a fájl végén is ki kell zárnunk a puffert. Adja hozzá ezt a sort ugyanazon fájl legalsó részéhez:

      

    Miután hozzáadta a két sort, frissítse blogját. A böngészőn nem fog semmit látni, de ellenőrizni kell / cache a témakönyvtárban, és két fájlt kell kezdeni cache-.

    A gyorsítótár használata

    Most, hogy létrehozta a gyorsítótárfájlt, használhatja azt bármely alkalmazásban, amelyhez hozzáfér. Ezt könnyen elvégezheti a include_once funkció, de azt is szeretném, ha a fájl létezik, csak azért, hogy biztonságban legyek:

      

    Csak győződjön meg róla, hogy ellenőrizze a fájl elérési útjának helyességét. Ha azt szeretné, hogy a gyorsítótárat törölni lehessen egy külső alkalmazásból, akkor hozzá kell adnia a cache_purge működjön a szkriptben valahol, és egyszerűen csak hívja ezt, ha szükséges. Ezután egyszerűen a függvény hívásának kérdése:

      

    Következtetés

    Ez a technika valóban hasznos minden PHP alkalmazás számára, különösen akkor, ha dinamikus tartalmat kíván megjeleníteni anélkül, hogy fel kellene áldoznia a teljesítményt. Használja a WordPress telepítésének felgyorsítására vagy hasznos bitek (például az oldalsáv) használatára bármely más webhelyen vagy alkalmazásban.

    A szerkesztő megjegyzése: Ezt a bejegyzést írta Monjurul Dolon Hongkiat.com részére. Monjurul egy NYC-alapú felülettervező és webfejlesztő, szabadúszó az életben. Blogja a DevGrow.com-on, ahol ötleteket és forrásokat oszt meg a webfejlesztés és a design terén.