วิธีแสดง WordPress Sidebar บนเว็บไซต์ที่ไม่ใช่ WordPress
ในขณะที่ทำงานในโครงการล่าสุดของฉันการสนทนา DevGrow ฉันได้พบกับความต้องการ ฝังแถบด้านข้าง WordPress ทั้งหมดของฉันในเว็บไซต์ที่ไม่ใช่ WordPress - โดยเฉพาะ ฟอรัม bbPress. เนื่องจากฉันใช้วิดเจ็ตต่างๆเพื่อแสดงโพสต์ยอดนิยมและเนื้อหาแบบไดนามิกอื่น ๆ เพียงแค่คัดลอกและวาง HTML จะไม่เพียงพอ ในท้ายที่สุดมีเพียงสองวิธีเท่านั้นที่จะทำสิ่งนี้:
- รวมถึงของคุณ WP-load.php ไฟล์ในแอปพลิเคชันของคุณและมีผลบังคับใช้โหลด WordPress ทั้งหมดเพื่อเข้าถึงฟังก์ชั่นปลั๊กอิน
- ใช้การแคชอย่างง่ายเพื่อจัดเก็บแถบด้านข้างในรูปแบบ HTML และรวมไว้ในแอปพลิเคชันอื่น ๆ จากนั้นสร้างใหม่ตามความจำเป็นเมื่อมีการเผยแพร่เนื้อหาใหม่
หากไม่ชัดเจนเพียงพอตัวเลือกแรกนั้นมีค่าใช้จ่ายสูงมากในแง่ของการสืบค้นฐานข้อมูลและอาจทำให้ไซต์ของคุณช้าลงอย่างมาก ตัวเลือกที่สองต้องการความพยายามเล็กน้อยในการนำไปใช้ แต่ประสิทธิภาพที่ชาญฉลาดไม่มีการแข่งขัน.
แคช WordPress ของคุณแถบด้านข้าง
ก่อนที่เราจะสามารถเขียนฟังก์ชั่นของเราเราต้องเข้าใจอย่างชัดเจนว่าเรากำลังพยายามทำอะไร เป้าหมายของเราคือ แคชแถบด้านข้างของเราไปยังไฟล์ข้อความ และ อัปเดตแคชนั้นเมื่อใดก็ตามที่เราเผยแพร่โพสต์, เปลี่ยนธีมของเราหรือทำการเปลี่ยนแปลงวิดเจ็ตแถบด้านข้าง เนื่องจากเราวางแผนที่จะใช้แคชของเราเพื่อแสดงแถบด้านข้างในแอปพลิเคชันอื่นเราจึงต้องสามารถลบแคชได้อย่างง่ายดายโดยไม่มีผลกระทบใด ๆ (เราไม่ต้องการให้แถบด้านข้างของเราเสียได้ตลอดเวลา).
เพื่อให้บรรลุเป้าหมายนี้อย่างมีประสิทธิภาพเราจะทำเช่นเดียวกัน สร้างบันทึกไฟล์แคชของเรา และ ใช้เพื่อระบุว่าควรล้างแคชหรือไม่. ถ้าเป็นเช่นนั้นไฟล์แคชจริงจะถูกเขียนทับในครั้งต่อไปที่มีคนเยี่ยมชมเว็บไซต์ WordPress เพื่อให้แน่ใจว่ามีการแสดงแถบด้านข้างที่เหมาะสมในทั้งสองแอปพลิเคชัน.
การสร้างฟังก์ชั่น
ในการเริ่มต้นให้เปิดธีมของคุณ functions.php ไฟล์และเพิ่มฟังก์ชั่นต่อไปนี้:
ฟังก์ชั่นแคช ($ task, $ cacheFile, $ cacheTime = 21600) แคช $ ทั่วโลก; // กำหนดค่าไฟล์และไดเรกทอรี: $ cacheDir = TEMPLATEPATH. "/ cache"; $ cacheFileName = $ cacheDir. "/ cache- $ cacheFile.txt"; $ cacheLogFile = $ cacheDir. "/ cache-log.txt"; // สร้างไดเรกทอรีแคชหากไม่มีอยู่ (! is_dir ($ cacheDir)) mkdir ($ cacheDir, 0755); // ทำบันทึกของไฟล์แคชด้วยสถานะปัจจุบันหาก (file_exists ($ cacheLogFile)) $ cacheLog = unserialize (file_get_contents ($ cacheLogFile)); อื่น $ cacheLog = แถว (); ถ้า ($ task == 'start') // หากแคชมีอยู่น้อยกว่า 6 ชั่วโมงและไม่ได้อยู่ในคิวการลบให้เก็บไว้ - มิฉะนั้นจะสร้างแคชใหม่ (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, อันดับ ($ cacheLog));
ฟังก์ชั่นแรกเหล่านี้, ขุมทรัพย์, เป็นกุญแจสำคัญในการทำให้แคชของเราทำงาน ฟังก์ชั่นจะตั้งค่าไฟล์และไดเรกทอรีที่ถูกต้องตรวจสอบแคชที่จะต้องสร้างและถ้าเป็นเช่นนั้นจะบันทึกเอาต์พุตและอัพเดตบันทึกแคช ฟังก์ชั่นนี้ใช้การบัฟเฟอร์เอาต์พุตของ PHP เพื่อบันทึก HTML ใด ๆ ที่สร้างขึ้นในไฟล์ข้อความ.
ฟังก์ชั่นที่สองใช้เพื่อกำจัดไฟล์แคชทั้งหมดและมีประโยชน์สำหรับการเพิ่มลงใน hooks WordPress ที่มีอยู่ ด้วยเราสามารถทำให้แคชของเราถูกล้างทุกครั้งที่ธีมของเราอัปเดตโพสต์จะถูกบันทึกหรือวิดเจ็ตแถบด้านข้างของเราได้รับการอัปเดตโดยเพิ่มรายการต่อไปนี้ในตอนท้ายของ functions.php:
add_action ('switch_theme', 'cache_purge', 10); add_action ('publish_post', 'cache_purge', 10); add_filter ('widget_update_callback', 'cache_purge', 10);
สำหรับรายการ hooks ทั้งหมดให้ตรวจสอบการอ้างอิง WordPress Plugin API.
การกำหนดค่าแถบด้านข้างของคุณ
หลังจากที่คุณมีฟังก์ชั่นพร้อมคุณสามารถเริ่มแคชแถบด้านข้างของคุณ เปิดของคุณ sidebar.php และเพิ่มบรรทัดนี้ไปยังจุดเริ่มต้นของไฟล์:
ฟังก์ชั่นนี้จะเริ่มการแคชแถบด้านข้างที่มันต้องการไม่เช่นนั้นมันจะไม่ทำอะไรเลย เนื่องจากวิธีการทำงานของบัฟเฟอร์บัฟเฟอร์เอาต์พุต PHP เราจึงต้องปิดบัฟเฟอร์ที่ส่วนท้ายของไฟล์ด้วย เพิ่มบรรทัดนี้ไปที่ด้านล่างสุดของไฟล์เดียวกัน:
หลังจากคุณเพิ่มสองบรรทัดแล้วให้รีเฟรชบล็อกของคุณ คุณจะไม่เห็นอะไรเลยในเบราว์เซอร์ของคุณ แต่ตรวจสอบ / แคช ไดเรกทอรีในโฟลเดอร์ชุดรูปแบบของคุณและคุณควรเห็นสองไฟล์ที่ขึ้นต้นด้วย ขุมทรัพย์-.
ใช้แคชของคุณ
เมื่อคุณสร้างไฟล์แคชแล้วคุณสามารถใช้ไฟล์นั้นในแอปพลิเคชันที่สามารถเข้าถึงได้ คุณสามารถทำได้โดยใช้ include_once ฟังก์ชั่น แต่ฉันก็ชอบที่จะทำให้แน่ใจว่าไฟล์นั้นมีอยู่เพื่อความปลอดภัย:
เพียงให้แน่ใจว่าได้ตรวจสอบเส้นทางไฟล์ของคุณอีกครั้งอย่างถูกต้อง หากคุณต้องการตั้งค่าแคชให้ลบออกจากแอปพลิเคชันภายนอกคุณจะต้องรวม cache_purge ฟังก์ชั่นในสคริปต์ของคุณที่ใดที่หนึ่งและเรียกว่าเมื่อใดก็ตามที่จำเป็น หลังจากนั้นเป็นเพียงการเรียกใช้ฟังก์ชัน:
ข้อสรุป
เทคนิคนี้มีประโยชน์จริง ๆ สำหรับแอปพลิเคชัน PHP ใด ๆ โดยเฉพาะเมื่อคุณต้องการแสดงเนื้อหาแบบไดนามิกโดยไม่ต้องเสียสละประสิทธิภาพ ใช้เพื่อเพิ่มความเร็วในการติดตั้ง WordPress ของคุณหรือสามารถใช้บิตที่มีประโยชน์ (เช่นแถบด้านข้าง) บนเว็บไซต์หรือแอปพลิเคชันอื่น ๆ.
หมายเหตุจากบรรณาธิการ: โพสต์นี้เขียนโดย Monjurul Dolon สำหรับ Hongkiat.com Monjurul เป็นนักออกแบบอินเตอร์เฟสและนักพัฒนาเว็บไซต์ที่ใช้ NYC เป็นหลักในการดำเนินชีวิตอย่างอิสระ เขาบล็อกที่ DevGrow.com ซึ่งเขาแบ่งปันเคล็ดลับและแหล่งข้อมูลเกี่ยวกับการพัฒนาและออกแบบเว็บ.