Domovská » WordPress » Jak zobrazit WordPress postranní panel na webových stránkách Non-WordPress

    Jak zobrazit WordPress postranní panel na webových stránkách Non-WordPress

    Při práci na mém posledním projektu, DevGrow Diskuse, jsem narazil na potřebu Vložit můj celý WordPress postranní panel na non-WordPress stránky - konkrétně a bbPress fórum. Vzhledem k tomu, že používám různé widgety pro zobrazení populárních příspěvků a dalšího dynamického obsahu, nestačí pouze kopírovat a vkládat HTML. Nakonec existují opravdu jen dva způsoby, jak na to jít:

    1. Zahrnout vaše wp-load.php soubor ve vaší aplikaci a ve skutečnosti načíst celý WordPress získat přístup k funkcím pluginu
    2. Použijte jednoduché ukládání do mezipaměti, abyste uložili postranní panel ve formátu HTML a zahrnuli jej do jakékoli jiné aplikace, poté jej znovu vytvořte podle potřeby při publikování nového obsahu.

    Pokud to není dost jasné, první možnost je velmi nákladná, pokud jde o databázové dotazy a může výrazně zpomalit vaše stránky dolů. Druhá možnost vyžaduje malé úsilí při provádění, ale výkonnost není konkurence.

    Ukládání do mezipaměti WordPress postranního panelu

    Než budeme moci psát naši funkci, musíme přesně pochopit, co se snažíme udělat. Naším cílem je uložte náš postranní panel do textového souboru a aktualizovat tuto vyrovnávací paměť, kdykoli publikujeme příspěvek, změňte náš motiv nebo proveďte změny widgetů postranního panelu. Vzhledem k tomu, že plánujeme používat vyrovnávací paměť k zobrazení postranního panelu v jiné aplikaci, musíme být schopni snadno odstranit mezipaměť bez jakýchkoli nepříznivých efektů (nechceme, aby byl náš postranní panel kdykoliv přerušen).

    Abychom toho dosáhli efektivně, budeme také vytvořte protokol souborů v mezipaměti a určete, zda má být mezipaměť vymazána. Pokud ano, bude aktuální soubor mezipaměti přepsán při příští návštěvě webu WordPress, což zajistí, že na obou aplikacích bude vždy vykreslen řádný postranní panel..

    Vytvoření funkcí

    Chcete-li začít, otevřete téma functions.php a přidejte do ní následující funkce:

     funkce cache ($ task, $ cacheFile, $ cacheTime = 21600) global $ cache; // Konfigurace souborů a adresářů: $ cacheDir = TEMPLATEPATH. "/ Cache"; $ cacheFileName = $ cacheDir. "/ cache- $ cacheFile.txt"; $ cacheLogFile = $ cacheDir. "/ cache-log.txt"; // Vytvoření adresáře cache, pokud neexistuje, pokud (! Is_dir ($ cacheDir)) mkdir ($ cacheDir, 0755); // Proveďte záznam souborů mezipaměti s jejich aktuálním stavem, pokud (file_exists ($ cacheLogFile)) $ cacheLog = unserialize (file_get_contents ($ cacheLogFile)); else $ cacheLog = array (); if ($ task == 'start') // Pokud existuje mezipaměť, je méně než 6 hodin stará a není ve fronty pro mazání, ponechte ji - jinak znovu vytvořte mezipaměť (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, serializovat ($ cacheLog));  

    Tyto první funkce, mezipaměti, je klíčem k tomu, aby naše cache fungovala. V závislosti na tom, kde ve vašem souboru zavoláte, bude funkce nastavovat správné soubory a adresáře, ověřovat, zda je třeba vytvořit mezipaměť, a pokud ano, uloží výstup a aktualizuje protokol mezipaměti. Tato funkce využívá buffering výstupu PHP k uložení jakéhokoliv HTML generovaného do textového souboru.

    Druhá funkce slouží k vymazání všech souborů mezipaměti a je užitečná pro přidání existujících háčků WordPress. Můžeme to provést tak, aby se naše vyrovnávací paměť vymazávala pokaždé, když je naše téma aktualizováno, příspěvek je uložen nebo naše widgety sidebar aktualizovány přidáním následujícího 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); 

    Pro úplný seznam háčků, podívejte se na WordPress Plugin API Reference.

    Konfigurace postranního panelu

    Nyní, když máte připravené funkce, můžete zahájit ukládání do mezipaměti. Otevřete svůj sidebar.php a přidejte tento řádek na začátek souboru:

      

    Tato funkce spustí ukládání do mezipaměti postranního panelu, který potřebuje, jinak neudělá nic. Vzhledem k tomu, jak funguje funkce bufferingu výstupu PHP, musíme také zavřít buffer na konci souboru. Přidat tento řádek do samého konce stejného souboru:

      

    Po přidání těchto dvou řádků obnovte svůj blog. Ve vašem prohlížeči se nic nezobrazí, ale zkontrolujte /mezipaměti ve složce motivu a měli byste vidět dva soubory začínající na mezipaměti-.

    Používání vyrovnávací paměti

    Nyní, když jste vytvořili soubor mezipaměti, můžete jej použít v jakékoli aplikaci, která k němu má přístup. Můžete to snadno udělat pomocí include_once funkci, ale také se ujistím, že soubor existuje, jen aby byl bezpečný:

      

    Jen se ujistěte, že je dvojitá kontrola cesty souboru správná. Chcete-li nastavit mezipaměť pro vymazání z externí aplikace, musíte ji zahrnout cache_purge někde ve vašem skriptu a jednoduše ho zavolejte. Poté je to prostě otázka volání funkce:

      

    Závěr

    Tato technika je opravdu užitečná pro všechny aplikace PHP, zejména pokud chcete zobrazit dynamický obsah, aniž byste museli obětovat výkon. Použijte jej pro zrychlení instalace WordPressu nebo použijte užitečné bity (jako je postranní panel) na jakékoli jiné webové stránce nebo aplikaci.

    Poznámka editora: Tento příspěvek je napsán Monjurul Dolon pro Hongkiat.com. Monjurul je NYC-založené rozhraní návrhář a web developer, na volné noze jeho cestu přes život. On blogy na DevGrow.com, kde sdílí tipy a zdroje na vývoj webových aplikací a designu.