So zeigen Sie die WordPress-Sidebar auf Nicht-WordPress-Websites an
Bei der Arbeit an meinem neuesten Projekt, DevGrow Discussions, bin ich auf die Notwendigkeit gestoßen Betten Sie meine gesamte WordPress-Seitenleiste in eine Nicht-WordPress-Site ein - speziell a bbPress forum. Da ich verschiedene Widgets zur Anzeige beliebter Posts und anderer dynamischer Inhalte verwende, würde das einfache Kopieren und Einfügen des HTML-Codes nicht ausreichen. Am Ende gibt es eigentlich nur zwei Möglichkeiten, dies zu tun:
- Fügen Sie Ihre ein wp-load.php Datei in Ihrer Anwendung und tatsächlich laden Sie die gesamte WordPress-Datei, um Zugriff auf die Plugin-Funktionen zu erhalten
- Verwenden Sie die einfache Zwischenspeicherung, um die Seitenleiste im HTML-Format zu speichern und in eine andere Anwendung aufzunehmen. Erstellen Sie sie bei Bedarf neu, wenn neuer Inhalt veröffentlicht wird
Wenn dies nicht offensichtlich genug ist, ist die erste Option hinsichtlich Datenbankabfragen sehr kostspielig und kann Ihre Site erheblich verlangsamen. Die zweite Option erfordert einen geringen Aufwand bei der Implementierung, aber hinsichtlich der Leistung gibt es keinen Wettbewerb.
Zwischenspeichern Ihrer WordPress-Seitenleiste
Bevor wir unsere Funktion schreiben können, müssen wir genau verstehen, was wir zu tun versuchen. Unser Ziel ist es zu cachen Sie unsere Seitenleiste in eine Textdatei und Aktualisieren Sie diesen Cache, wenn Sie einen Beitrag veröffentlichen, Ändern Sie unser Design oder nehmen Sie Änderungen an den Sidebar-Widgets vor. Da der Cache für die Anzeige der Seitenleiste in einer anderen Anwendung geplant ist, müssen wir den Cache problemlos und ohne negative Auswirkungen löschen können (wir möchten, dass unsere Seitenleiste zu keinem Zeitpunkt beschädigt wird)..
Um dies effizient zu erreichen, werden wir es auch tun Erstellen Sie ein Protokoll unserer zwischengespeicherten Dateien und Verwenden Sie dies, um zu bestimmen, ob der Cache gelöscht werden soll. Wenn dies der Fall ist, wird die tatsächliche Cache-Datei beim nächsten Besuch der WordPress-Site überschrieben, um sicherzustellen, dass in beiden Anwendungen immer eine richtige Seitenleiste angezeigt wird.
Erstellen der Funktionen
Um zu beginnen, öffne dein Thema Functions.php Datei und fügen Sie die folgenden Funktionen hinzu:
Funktionscache ($ task, $ cacheFile, $ cacheTime = 21600) globaler $ cache; // Dateien und Verzeichnisse konfigurieren: $ cacheDir = TEMPLATEPATH. "/ Cache"; $ cacheFileName = $ cacheDir. "/ cache- $ cacheFile.txt"; $ cacheLogFile = $ cacheDir. "/ cache-log.txt"; // Cache-Verzeichnis erstellen, falls es nicht existiert if (! Is_dir ($ cacheDir)) mkdir ($ cacheDir, 0755); // Protokolliere die Cache-Dateien mit ihrem aktuellen Status, wenn (file_exists ($ cacheLogFile)) $ cacheLog = unserialize (file_get_contents ($ cacheLogFile)); else $ cacheLog = array (); if ($ task == 'start') // Wenn der Cache vorhanden ist, weniger als 6 Stunden alt ist und sich nicht in der Löschwarteschlange befindet, behalten Sie ihn bei - andernfalls erstellen Sie den Cache erneut, wenn (file_exists ($ cacheFileName) && (time () - filemtime) vorhanden ist ($ 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));
Diese erste Funktion, Zwischenspeicher, ist der Schlüssel, um unseren Cache zum Laufen zu bringen. Abhängig davon, wo Sie Ihre Datei in Ihrer Datei aufrufen, richtet die Funktion die richtigen Dateien und Verzeichnisse ein, überprüft, ob ein Cache erstellt werden muss. Wenn ja, speichert er die Ausgabe und aktualisiert das Cache-Protokoll. Die Funktion verwendet die Ausgabepufferung von PHP, um generierten HTML-Code in einer Textdatei zu speichern.
Die zweite Funktion wird verwendet, um alle Cache-Dateien zu löschen, und ist hilfreich, um vorhandene WordPress-Hooks hinzuzufügen. Damit können wir es so einrichten, dass unser Cache jedes Mal gelöscht wird, wenn unser Design aktualisiert wird, ein Beitrag gespeichert wird oder unsere Sidebar-Widgets aktualisiert werden, indem am Ende von Folgendes hinzugefügt wird Functions.php:
add_action ('switch_theme', 'cache_purge', 10); add_action ('publish_post', 'cache_purge', 10); add_filter ('widget_update_callback', 'cache_purge', 10);
Eine vollständige Liste der Hooks finden Sie in der WordPress Plugin-API-Referenz.
Konfigurieren Sie Ihre Sidebar
Jetzt, da Sie die Funktionen bereit haben, können Sie mit dem Zwischenspeichern Ihrer Seitenleiste beginnen. Öffne deine sidebar.php und füge diese Zeile am Anfang der Datei hinzu:
Diese Funktion beginnt mit dem Zwischenspeichern der erforderlichen Seitenleiste, andernfalls wird nichts ausgeführt. Aufgrund der Funktionsweise der PHP-Ausgabepufferung müssen wir auch den Puffer am Ende der Datei schließen. Fügen Sie diese Zeile am Ende der gleichen Datei hinzu:
Nachdem Sie diese beiden Zeilen hinzugefügt haben, aktualisieren Sie Ihr Blog. Sie werden nichts in Ihrem Browser sehen, aber überprüfen Sie die /Zwischenspeicher Verzeichnis in Ihrem Designordner und Sie sollten zwei Dateien sehen, die mit Zwischenspeicher-.
Cache verwenden
Nachdem Sie Ihre Cache-Datei erstellt haben, können Sie sie in jeder Anwendung verwenden, die Zugriff darauf hat. Sie können dies einfach mit der include_once Funktion, aber ich möchte auch sicherstellen, dass die Datei existiert, nur um sicher zu sein:
Stellen Sie sicher, dass der Dateipfad korrekt ist. Wenn Sie Ihren Cache so einstellen möchten, dass er aus einer externen Anwendung gelöscht wird, müssen Sie den Cache einfügen cache_purge Funktionieren Sie irgendwo in Ihrem Skript und rufen Sie es bei Bedarf einfach auf. Danach geht es nur noch darum, die Funktion aufzurufen:
Fazit
Diese Technik ist für jede PHP-Anwendung sehr nützlich, insbesondere wenn Sie dynamischen Inhalt anzeigen möchten, ohne die Leistung zu beeinträchtigen. Verwenden Sie es, um die Installation von WordPress zu beschleunigen oder nützliche Bits (wie die Seitenleiste) auf einer anderen Website oder Anwendung verwenden zu können.
Anmerkung des Herausgebers: Dieser Beitrag wird von geschrieben Monjurul Dolon für Hongkiat.com. Monjurul ist ein in NYC ansässiger Interface-Designer und Web-Entwickler, der seinen Weg durch das Leben freiberuflich gestaltet. Er bloggt auf DevGrow.com, wo er Tipps und Ressourcen zur Webentwicklung und zum Design gibt.