Startpagina » WordPress » Hoe WordPress zijbalk weer te geven op niet-WordPress-websites

    Hoe WordPress zijbalk weer te geven op niet-WordPress-websites

    Tijdens het werken aan mijn nieuwste project, DevGrow Discussions, kwam ik de behoefte tegen embed mijn hele WordPress zijbalk op een niet-WordPress-site - specifiek een bbPress-forum. Omdat ik gebruik maak van verschillende widgets om populaire berichten en andere dynamische inhoud weer te geven, zou het eenvoudigweg kopiëren en plakken van de HTML niet voldoende zijn. Uiteindelijk zijn er eigenlijk maar twee manieren om dit te doen:

    1. Voeg uw toe wp-load.php bestand in uw toepassing en in feite alle WordPress laden om toegang te krijgen tot de plug-infuncties
    2. Gebruik eenvoudige caching om de zijbalk in HTML-indeling op te slaan en deze in een andere toepassing op te nemen en vervolgens opnieuw te bouwen wanneer nodig, wanneer nieuwe inhoud wordt gepubliceerd

    Als het niet duidelijk genoeg is, is de eerste optie erg duur in termen van databasequery's en kan uw site aanzienlijk vertragen. De tweede optie vereist een beetje inspanning bij de implementatie, maar qua prestaties is er geen concurrentie.

    Uw WordPress zijbalk opslaan in cachegeheugen

    Voordat we onze functie kunnen schrijven, moeten we precies begrijpen wat we proberen te doen. Ons doel is om cache onze zijbalk in een tekstbestand en update die cache telkens wanneer we een bericht publiceren, verander ons thema of breng wijzigingen aan in de zijbalk-widgets. Aangezien we van plan zijn onze cache te gebruiken om de zijbalk in een andere applicatie weer te geven, moeten we in staat zijn om de cache gemakkelijk te verwijderen zonder enige nadelige gevolgen (we willen niet dat onze zijbalk op enig moment wordt verbroken).

    Om dit efficiënt te bereiken, zullen we ook maak een logbestand van onze cachebestanden en gebruik dat om te bepalen of de cache moet worden gewist. Als dit het geval is, wordt het daadwerkelijke cachebestand overschreven wanneer iemand de WordPress-site opnieuw bezoekt, zodat een goede zijbalk altijd wordt weergegeven op beide toepassingen.

    De functies maken

    Om te beginnen, open je je thema's functions.php bestand en voeg de volgende functies toe:

     functie cache ($ task, $ cacheFile, $ cacheTime = 21600) global $ cache; // Configureer bestanden en mappen: $ cacheDir = TEMPLATEPATH. "/ Cache"; $ cacheFileName = $ cacheDir. "/ cache- $ cacheFile.txt"; $ cacheLogFile = $ cacheDir. "/ cache-log.txt"; // Maak een cachedirectory als deze niet bestaat als (! Is_dir ($ cacheDir)) mkdir ($ cacheDir, 0755); // Maak een log van de cachebestanden met hun huidige status if (file_exists ($ cacheLogFile)) $ cacheLog = unserialize (file_get_contents ($ cacheLogFile)); else $ cacheLog = array (); if ($ task == 'start') // Als cache bestaat, minder dan 6 uur oud is en niet in de verwijderingswachtrij staat, houd hem dan - anders cache opnieuw samenstellen als (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=>$ waarde) $ cacheLog [$ key] = 0; file_put_contents ($ cacheLogFile, serialize ($ cacheLog));  

    Deze eerste functie, cache, is de sleutel om onze cache te laten werken. Afhankelijk van waar in je bestand je het noemt, zal de functie de juiste bestanden en mappen instellen, controleren of er een cache moet worden gebouwd en zo ja, de uitvoer opslaan en het cachelogboek bijwerken. De functie gebruikt de uitvoerbuffering van PHP om alle gegenereerde HTML in een tekstbestand op te slaan.

    De tweede functie wordt gebruikt om alle cachebestanden te verwijderen en is handig om toe te voegen aan bestaande WordPress-hooks. Hiermee kunnen we ervoor zorgen dat onze cache wordt gewist telkens wanneer ons thema wordt bijgewerkt, een bericht wordt opgeslagen of onze zijbalkgadgets worden bijgewerkt door het volgende toe te voegen aan het einde van functions.php:

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

    Zie de WordPress Plugin API Reference voor een volledige lijst met hooks.

    Uw zijbalk configureren

    Nu u de functies gereed hebt, kunt u beginnen met het cachen van uw zijbalk. Open je sidebar.php en voeg deze regel toe aan het begin van het bestand:

      

    Deze functie begint met het cachen van de zijbalk die het nodig heeft, anders zal het niets doen. Vanwege de manier waarop de PHP-uitvoerbuffering werkt, moeten we ook de buffer aan het einde van het bestand afsluiten. Voeg deze regel helemaal onderaan hetzelfde bestand toe:

      

    Nadat u deze twee lijnen heeft toegevoegd, vernieuwt u uw blog. U zult niets in uw browser zien, maar controleer de / cache map in uw themamap en u zou twee bestanden moeten zien die beginnen met cache-.

    Uw cache gebruiken

    Nu u uw cachebestand hebt gemaakt, kunt u het in elke toepassing gebruiken die er toegang toe heeft. U kunt dit eenvoudig doen met behulp van de include_once functie, maar ik vind het ook leuk om ervoor te zorgen dat het bestand bestaat, alleen maar om veilig te zijn:

      

    Zorg er wel voor dat u uw bestandspad correct controleert. Als u wilt dat uw cache wordt verwijderd uit een externe toepassing, moet u de cache_purge functioneer ergens in je script en noem dat gewoon wanneer dat nodig is. Daarna is het gewoon een kwestie van de functie aanroepen:

      

    Conclusie

    Deze techniek is erg handig voor elke PHP-toepassing, vooral als je dynamische inhoud wilt weergeven zonder de prestaties op te offeren. Gebruik het om uw WordPress-installatie te versnellen of om nuttige bits (zoals de zijbalk) te gebruiken op elke andere website of applicatie.

    Opmerking van de uitgever: Dit bericht is geschreven door Monjurul Dolon voor Hongkiat.com. Monjurul is een op NYC gebaseerde interfaceontwerper en webontwikkelaar en freelanceert zich een weg door het leven. Hij blogt op DevGrow.com, waar hij tips en bronnen deelt over webontwikkeling en -ontwerp.