Cara Menampilkan Bilah Samping WordPress di Situs Web Non-WordPress
Saat mengerjakan proyek terbaru saya, Diskusi DevGrow, saya menemukan kebutuhan untuk itu sematkan seluruh bilah samping WordPress saya di situs non-WordPress - khususnya a forum bbPress. Karena saya menggunakan berbagai widget untuk menampilkan posting populer dan konten dinamis lainnya, cukup menyalin dan menempelkan HTML tidak akan cukup. Pada akhirnya, hanya ada dua cara untuk melakukan ini:
- Sertakan wp-load.php file dalam aplikasi Anda dan pada dasarnya memuat keseluruhan WordPress untuk mendapatkan akses ke fungsi plugin
- Gunakan cache sederhana untuk menyimpan sidebar dalam format HTML dan memasukkannya ke dalam aplikasi lain, lalu membangunnya kembali saat diperlukan ketika konten baru diterbitkan
Jika tidak cukup jelas, opsi pertama sangat mahal dalam hal permintaan basis data dan secara signifikan dapat memperlambat situs Anda. Opsi kedua membutuhkan sedikit usaha dalam implementasi tetapi kinerja bijaksana tidak ada persaingan.
Caching Sidebar WordPress Anda
Sebelum kita dapat menulis fungsi kita, kita perlu memahami dengan tepat apa yang kita coba lakukan. Tujuan kami adalah untuk cache sidebar kami ke file teks dan perbarui cache itu setiap kali kami mempublikasikan posting, ubah tema kami atau ubah widget sidebar. Karena kami berencana menggunakan cache untuk menampilkan bilah sisi pada aplikasi lain, kami harus dapat dengan mudah menghapus cache tanpa ada efek buruk (kami tidak ingin bilah samping kami rusak kapan saja).
Untuk mencapai ini secara efisien, kami juga akan melakukannya buat log dari file cache kami dan gunakan itu untuk menentukan apakah cache harus dihapus. Jika demikian, file cache yang sebenarnya akan ditimpa saat berikutnya seseorang mengunjungi situs WordPress, memastikan sidebar yang tepat selalu ditampilkan di kedua aplikasi.
Menciptakan Fungsinya
Untuk memulai, buka tema Anda functions.php file dan tambahkan fungsi berikut untuk itu:
cache fungsi ($ task, $ cacheFile, $ cacheTime = 21600) global $ cache; // Mengkonfigurasi file dan direktori: $ cacheDir = TEMPLATEPATH. "/ Cache"; $ cacheFileName = $ cacheDir. "/ cache- $ cacheFile.txt"; $ cacheLogFile = $ cacheDir. "/ cache-log.txt"; // Buat direktori cache jika tidak ada if (! Is_dir ($ cacheDir)) mkdir ($ cacheDir, 0755); // Buat log dari file cache dengan statusnya saat ini jika (file_exists ($ cacheLogFile)) $ cacheLog = unserialize (file_get_contents ($ cacheLogFile)); selain itu $ cacheLog = array (); if ($ task == 'start') // Jika ada cache, berumur kurang dari 6 jam dan tidak dalam antrian penghapusan, simpanlah - jika tidak, buat kembali cache jika (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, serialize ($ cacheLog));
Ini fungsi pertama, cache, adalah kunci untuk membuat cache kita berfungsi. Bergantung pada tempat Anda memanggilnya, fungsi akan mengatur file dan direktori yang benar, memverifikasi cache yang perlu dibangun dan jika demikian, akan menyimpan output dan memperbarui log cache. Fungsi ini menggunakan buffering output PHP untuk menyimpan HTML apa pun yang dihasilkan ke file teks.
Fungsi kedua digunakan untuk membersihkan semua file cache dan berguna untuk menambah kait WordPress yang ada. Dengan itu, kita dapat membuatnya sehingga cache kita dihapus setiap kali tema kita diperbarui, sebuah posting disimpan atau widget bilah sisi kita diperbarui dengan menambahkan berikut ini di akhir functions.php:
add_action ('switch_theme', 'cache_purge', 10); add_action ('publish_post', 'cache_purge', 10); add_filter ('widget_update_callback', 'cache_purge', 10);
Untuk daftar lengkap kait, lihat Referensi API Plugin WordPress.
Mengkonfigurasi Sidebar Anda
Sekarang Anda sudah memiliki fungsi yang siap, Anda dapat mulai melakukan caching sidebar Anda. Buka sidebar.php dan tambahkan baris ini ke awal file:
Fungsi ini akan mulai melakukan caching pada sidebar yang diperlukan, jika tidak maka tidak akan melakukan apa-apa. Karena cara fungsi buffer keluaran PHP bekerja, kita juga perlu menutup buffer di akhir file juga. Tambahkan baris ini ke bagian paling bawah dari file yang sama:
Setelah menambahkan dua baris itu, segarkan blog Anda. Anda tidak akan melihat apa pun di browser Anda, tetapi periksa / cache direktori di folder tema Anda dan Anda akan melihat dua file dimulai dengan cache-.
Menggunakan Cache Anda
Sekarang setelah Anda membuat file cache, Anda dapat menggunakannya di aplikasi apa pun yang memiliki akses ke sana. Anda dapat dengan mudah melakukan ini menggunakan include_once berfungsi tetapi saya juga suka memastikan file ada, hanya untuk aman:
Pastikan untuk memeriksa ulang jalur file Anda sudah benar. Jika Anda ingin mengatur cache untuk dihapus dari aplikasi eksternal, Anda harus memasukkan cache_purge berfungsi dalam skrip Anda di suatu tempat dan cukup menyebutnya kapan saja diperlukan. Setelah itu hanya masalah memanggil fungsi:
Kesimpulan
Teknik ini sangat berguna untuk aplikasi PHP apa pun, terutama ketika Anda ingin menampilkan konten dinamis tanpa harus mengorbankan kinerja. Gunakan untuk mempercepat instalasi WordPress Anda atau dapat menggunakan bit yang berguna (seperti bilah sisi) di situs web atau aplikasi lain.
Catatan Editor: Posting ini ditulis oleh Monjurul Dolon untuk Hongkiat.com. Monjurul adalah perancang antarmuka dan pengembang web berbasis NYC, lepas dari hidupnya. Ia menulis blog di DevGrow.com, tempat ia berbagi kiat dan sumber daya tentang pengembangan dan desain web.