Tumtook Agents
Get Data information about all sale of tumtook.
Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/marketingtumtook/tumtook-agent/archive/refs/heads/main.zipTumtook Agents 1.2.0
แสดงทีมฝ่ายขายผ่าน shortcode [tumtook_agents] และตรวจข้อมูล API เบื้องหลังทุก 60 วินาที
การ์ดฝ่ายขายมีปุ่ม “แชต LINE” ซึ่งเปิด URL จาก LINE ID ของ Agent โดยตรง รูป Agent และ QR ใช้ lazy loading และ asynchronous decoding ส่วนหน้า Contact จะวางปุ่มสั่งซื้อของ Footer ไว้ใน flow ปกติเพื่อไม่ให้ทับข้อมูลบนมือถือ
การอัปเดตและแคช
- งาน WordPress Cron ชื่อ tumtook_agents_refresh_event ดึง API โดยตรงทุกครั้งที่รัน ไม่รอให้แคชข้อมูล 30 นาทีหมดอายุ
- หน้าเว็บอ่านข้อมูลที่เก็บไว้เท่านั้น ไม่เรียก API หรือ FlyingPress แม้ไม่มีข้อมูลทั้งสองชุด โดยจะแสดงข้อความชั่วคราวจนงานเบื้องหลังดึงข้อมูลสำเร็จ
- เปรียบเทียบเฉพาะข้อมูลที่ใช้แสดงการ์ด เมื่อข้อมูลเปลี่ยนจึงบันทึกข้อมูลใหม่ แล้วเรียก FlyingPress Purge::purge_urls เฉพาะหน้าที่เกี่ยวข้องในงานเบื้องหลัง ไม่เรียก Preload::preload_urls เพิ่มจากปลั๊กอินนี้ ส่วนการทำงานภายใน FlyingPress ขึ้นกับรุ่นและการตั้งค่าของ FlyingPress
- ผลลัพธ์ที่ไม่มีคนเปิด flex หรือรายการว่างเป็นผลสำเร็จ และจะเขียนทับทั้งแคชหลักและแคชสำรองด้วยรายการว่าง
- เมื่อ API ตอบผิดพลาด จะคงข้อมูลสำเร็จล่าสุดโดยไม่ต่ออายุข้อมูลเก่า แคชหลักเก็บได้ 30 นาที และแคชสำรองเก็บได้ 12 ชั่วโมงนับจากดึงสำเร็จล่าสุด
- ตรวจสถานะ HTTP, JSON และโครงสร้างรายการก่อนแทนข้อมูลเดิม รองรับทั้งรายการ JSON โดยตรงและ object ที่มี items เป็นรายการ แต่ละรายการต้องมี name เป็น string และ flexEnabled เป็น boolean ตามรูปแบบที่ shortcode ใช้
- เมื่อ API ใช้งานไม่ได้ ผู้ชมจะไม่เป็นผู้เรียก API ซ้ำ งานเบื้องหลังจะลองใหม่ตามรอบ
- ล็อกการดึงข้อมูลป้องกันคำขอพร้อมกัน และเก็บสถานะรอล้างแคชเพื่อให้ลองใหม่หาก FlyingPress เกิดข้อผิดพลาด
หน้าที่ล้างแคช
ค้นหา shortcode ใน post_content และข้อมูล Elementor (_elementor_data) ของหน้าสาธารณะ รวมถึงจำหน้าจริงเมื่อ shortcode ถูกแสดงผ่าน template ไม่ล้างแคชทั้งเว็บไซต์
หากใช้ shortcode ผ่าน shared template หรือหน้า archive ที่มีแคชเดิมตั้งแต่ก่อนติดตั้งรุ่นนี้ ให้เปิดหน้าที่เกี่ยวข้องโดยข้ามแคชหนึ่งครั้งเพื่อให้ปลั๊กอินจำหน้า หรือกำหนด URL ผ่าน filter tumtook_agents_page_urls ในโค้ดของเว็บไซต์ สำหรับ archive ควรกำหนด URL ผ่าน filter นี้
ไม่สแกนรายการหน้าซ้ำเมื่อข้อมูลที่แสดงไม่เปลี่ยน รูปแบบการ์ดและการเรียงตาม LINE ID คงเดิม
ติดตั้งหรืออัปเดต
- อัปเดตโฟลเดอร์ tumtook-agents ทั้งชุด รวมถึงไฟล์ใหม่ includes/cache.php
- เปิดหน้า Settings → Tumtook Agents ใน WordPress เพื่อให้รุ่นใหม่ตั้งงานอัตโนมัติ ไม่ต้อง deactivate/reactivate
- งานครั้งแรกจะถูกตั้งให้พร้อมทำงานในประมาณหนึ่งวินาที เมื่อ WordPress Cron ถูกเรียกจะดึงข้อมูลล่าสุดและอัปเดตแคชหน้าที่ค้นพบ
- ตรวจเวลา “อัปเดตสำเร็จล่าสุด” และ “รอบตรวจถัดไป” ในหน้าตั้งค่า หากมีข้อผิดพลาดจะมีข้อความแสดง
ปุ่มเดิม Clear Cache เปลี่ยนเป็น “ขออัปเดตข้อมูล” โดยตั้งสถานะรอรอบงานเบื้องหลังถัดไปเท่านั้น ไม่ลบ snapshot ไม่ค้นหาหน้า และไม่เรียก API/FlyingPress ระหว่างกดปุ่ม กดซ้ำไม่เพิ่มงาน Cron ซ้ำ จึงไม่จำเป็นต้องกดเป็นประจำ
Cron บนเซิร์ฟเวอร์จริง
WP-Cron ตามปกติถูกกระตุ้นจากคำขอที่เข้าถึง WordPress จึงไม่รับประกันรอบหนึ่งนาทีหากไม่มีคนเข้าเว็บหรือคำขอถูกเสิร์ฟจาก page cache ทั้งหมด ต้องให้ตัวตั้งเวลาของโฮสติ้งเรียก WordPress ทุกนาทีเพื่อให้รอบตรวจสม่ำเสมอ
ตัวอย่าง Linux crontab (เปลี่ยน PHP binary และ path ให้ตรงกับเซิร์ฟเวอร์จริง):
* * * * * /usr/bin/php /path/to/wordpress/wp-cron.php > /dev/null 2>&1
ถ้าโฮสติ้งมีงานเรียก wp-cron.php ทุกนาทีอยู่แล้ว ให้ใช้ตัวเดิม ไม่ต้องเพิ่มซ้ำ เมื่อยืนยันว่า Cron ของเซิร์ฟเวอร์ทำงานแล้ว จึงตั้ง DISABLE_WP_CRON เป็น true ได้หากต้องการหยุดการกระตุ้นจากผู้ชม การแก้ปลั๊กอินครั้งนี้ไม่ได้เปลี่ยน wp-config.php หรือตั้ง Cron บนเครื่องเซิร์ฟเวอร์
ทดสอบเรียกงานทันทีด้วย WP-CLI บนเว็บไซต์ที่ติดตั้งแล้ว:
wp cron event run tumtook_agents_refresh_event --path=/path/to/wordpress
รอบ 60 วินาทีเป็นรอบตรวจข้อมูล การเปลี่ยนที่หน้าเว็บยังขึ้นกับเวลา API ตอบและการ purge ที่สำเร็จ และมีผลเมื่อเปิดหรือรีโหลดหน้า ไม่ได้เปลี่ยนหน้าที่เปิดค้างไว้โดยอัตโนมัติ
ทดสอบโค้ด
จาก WordPress root:
php wp-content/plugins/tumtook-agents/tests/cache-regression.php
php wp-content/plugins/tumtook-agents/tests/cache-regression.php --without-flyingpress
ใช้ WordPress hooks และตัวจัดตาราง Cron จริงจาก source ใน workspace แต่จำลอง HTTP, options/transients และ FlyingPress ส่วน SQL ค้นหาหน้ารันบน SQLite ในหน่วยความจำ ต้องมี PHP PDO SQLite ไม่ติดต่อ API หรือฐานข้อมูลเว็บไซต์จริง
เอกสารอ้างอิง:
การแก้ใน 1.1.1
ย้ายงานหนักออกจากคำขอหน้าเว็บและปุ่มหลังบ้าน โดยเฉพาะการค้นหาหน้าและล้าง FlyingPress ซึ่งรุ่น 1.1.0 อาจเรียกขณะกด Clear Cache หรือเปิดหน้าเมื่อไม่มี snapshot แล้ว เพิ่มอายุ lock เป็น 5 นาทีเพื่อลดงานซ้อนหากการล้างแคชช้า และไม่เรียก FlyingPress ระหว่าง deactivate
การทดสอบเป็นการจำลอง API และ FlyingPress ไม่ใช่การยืนยันสาเหตุ timeout ของเซิร์ฟเวอร์จริง หากยัง timeout ต้องตรวจ PHP error log, slow log และรุ่น/การตั้งค่า FlyingPress บนเว็บจริง