WordPress olmayan web sitelerinde WordPress kenar çubuğunu görüntüleme
En son projem olan DevGrow Tartışmaları üzerinde çalışırken, ihtiyaç duyduğum şeyle karşılaştım tüm WordPress kenar çubuğumu WordPress olmayan bir siteye yerleştirme - özellikle bir bbPress forumu. Popüler yayınları ve diğer dinamik içerikleri görüntülemek için çeşitli araçları kullandığımdan, HTML'yi kopyalamak ve yapıştırmak yeterli olmaz. Sonunda, bununla ilgili gerçekten iki yol var:
- Dahil wp-load.php Eklenti işlevlerine erişmek için uygulamanızdaki ve yürürlükteki dosyadaki WordPress'in tamamını yükleyin
- Kenar çubuğunu HTML biçiminde depolamak ve başka bir uygulamaya dahil etmek için basit önbellekleme kullanın, ardından yeni içerik yayınlandığında gerektiği şekilde yeniden oluşturun
Yeterince açık değilse, ilk seçenek veritabanı sorguları açısından çok maliyetlidir ve sitenizi önemli ölçüde yavaşlatabilir. İkinci seçenek, uygulamada biraz çaba gerektirir ancak performans açısından rekabet olmaz.
WordPress Kenar Çubuğunu Önbelleğe Alma
İşlevimizi yazmadan önce, tam olarak ne yapmaya çalıştığımızı anlamamız gerekir. Amacımız kenar çubuğumuzu bir metin dosyasına önbelleğe al ve Bir yayın yayınladığımızda bu önbelleği güncelle, temamızı değiştirebilir veya kenar çubuğu widget'larında değişiklikler yapabilirsiniz. Kenar çubuğunu farklı bir uygulamada görüntülemek için önbelleğimizi kullanmayı planladığımızdan, önbelleği herhangi bir kötü etki olmadan kolayca silebilmemiz gerekir (kenar çubuğumuzun herhangi bir zamanda kırılmasını istemeyiz).
Bunu verimli bir şekilde gerçekleştirmek için, biz de önbelleğe alınmış dosyalarımızın bir günlüğünü oluşturun ve önbelleğin temizlenmesi gerekip gerekmediğini belirlemek için bunu kullanın.. Öyleyse, kişi bir daha WordPress sitesini ziyaret ettiğinde gerçek önbellek dosyasının üzerine yazılacak ve her iki uygulamada da uygun bir kenar çubuğunun oluşturulmasını sağlayacak.
İşlevleri Oluşturma
Başlamak için temanızı açın functions.php dosyalayın ve ona aşağıdaki işlevleri ekleyin:
işlev önbelleği ($ task, $ cacheFile, $ cacheTime = 21600) global $ cache; // Dosyaları ve dizinleri yapılandırın: $ cacheDir = TEMPLATEPATH. "/ Cache"; $ cacheFileName = $ cacheDir. "/ cache- $ cacheFile.txt"; $ cacheLogFile = $ cacheDir. "/ cache-log.txt"; // Varsa önbellek dizini oluştur eğer eğer (! İs_dir ($ cacheDir)) mkdir ($ cacheDir, 0755); // Mevcut durumları olan önbellek dosyalarının bir günlüğünü yapın eğer (file_exists ($ cacheLogFile)) $ cacheLog = unserialize (file_get_contents ($ cacheLogFile)); else $ cacheLog = array (); if ($ task == 'start') // Önbellek varsa, 6 saatten daha eskiyse ve silme kuyruğunda değilse, devam et - aksi takdirde (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=>$ değer) $ cacheLog [$ key] = 0; file_put_contents ($ cacheLogFile, seri ($ cacheLog));
Bu ilk işlev, önbellek, önbelleğimizin çalışmasını sağlamanın anahtarıdır. Dosyanızın neresinde aradığınıza bağlı olarak, işlev doğru dosyaları ve dizinleri ayarlayacak, bir önbellek oluşturulması gerektiğini doğrulayacak ve eğer öyleyse çıktıyı kaydedecek ve önbellek günlüğünü güncelleyecektir. İşlev, bir metin dosyasına oluşturulan herhangi bir HTML'yi kaydetmek için PHP'nin çıktı tamponlamasını kullanır.
İkinci işlev tüm önbellek dosyalarını temizlemek için kullanılır ve mevcut WordPress kancalarına eklemek için kullanışlıdır. Bununla, temamız her güncellendiğinde önbelleğimizin temizlenmesini, bir yazının kaydedilmesini veya kenar çubuğu widget'larının sonuna aşağıdakileri ekleyerek güncellenmesini sağlayabiliriz. functions.php:
add_action ('switch_theme', 'cache_purge', 10); add_action ('publish_post', 'cache_purge', 10); add_filter ('widget_update_callback', 'cache_purge', 10);
Kancaların tam bir listesi için WordPress Eklentisi API Referansına göz atın..
Kenar Çubuğunu Yapılandırma
Artık hazır fonksiyonlara sahip olduğunuzda, kenar çubuğunu önbelleğe almaya başlayabilirsiniz. Aç senin sidebar.php ve bu satırı dosyanın başına ekleyin:
Bu işlev ihtiyaç duyduğu kenar çubuğunu önbelleğe almaya başlayacak, aksi halde hiçbir şey yapmaz. PHP çıktı tamponlama fonksiyonunun çalışması nedeniyle, dosyanın sonunda da tamponu kapatmamız gerekir. Bu satırı aynı dosyanın en altına ekleyin:
Bu iki satırı ekledikten sonra blogunuzu yenileyin. Tarayıcınızda hiçbir şey görmezsiniz, ancak / cache dizininizdeki klasörde görüldüğü gibi önbellek-.
Önbelleğinizi Kullanma
Artık önbellek dosyanızı oluşturduğunuza göre, dosyayı erişimi olan herhangi bir uygulamada kullanabilirsiniz. Bunu kullanarak kolayca yapabilirsiniz. include_once işlev, ancak dosyanın güvenli olduğundan emin olmak için de bulunduğundan emin olmak isterim:
Dosya yolunuzun doğru olup olmadığını iki kez kontrol ettiğinizden emin olun. Önbelleğinizi harici bir uygulamadan silmek üzere ayarlamak istiyorsanız, aşağıdakileri eklemeniz gerekir. cache_purge Komut dosyanızdaki herhangi bir yerde işlev görürseniz, gerektiğinde bunu basitçe söyleyin. Bundan sonra sadece işlev çağırma meselesi:
Sonuç
Bu teknik, özellikle performanstan ödün vermek zorunda kalmadan dinamik içerik görüntülemek istediğinizde, herhangi bir PHP uygulaması için gerçekten kullanışlıdır. WordPress yüklemenizi hızlandırmak veya başka herhangi bir web sitesinde veya uygulamada yararlı bitler (kenar çubuğu gibi) kullanabilmek için kullanın.
Editörün Notu: Bu gönderi tarafından yazılmıştır Monjurul Dolon Hongkiat.com için. Monjurul, NYC merkezli bir arayüz tasarımcısı ve web geliştiricisidir ve yaşamı boyunca serbesttir. Web geliştirme ve tasarım konularında ipuçlarını ve kaynaklarını paylaştığı DevGrow.com'da blog yazıyor..