สร้าง Search ของตัวเองด้วยฟิลเตอร์ posts_results

ได้โจทย์มาว่าเราจะต้องหาทางทำให้เราสามารถสร้าง Search ของเราเองได้ใน WordPress ความยากจะอยู่ที่ว่าทำอย่างไรเราถึงจะเอาผลลัพธ์ที่เราได้จากการ Search ไปแทรกก่อนที่ WordPress จะเอาผลลัพธ์นั้นไปแสดงผล

ตอนแรกนึกถึงฟิลเตอร์ pre_get_posts แต่มันไม่ได้ตอบโจทย์ที่เราตั้งไว้ เพราะว่า ฟิลเตอร์นี้เอาไว้ใช้ปรับแก้ตัว Query ของเรา ก่อนที่ WordPress จะเอา Query ไปประมวลผลจริงๆ ซึ่งผลลัพธ์จากการ Search สุดท้ายที่เราได้ มันก็จะมาจาก WordPress อยู่ดี

WordPress Audit Log บน AWS Elasticsearch

เนื่องจากที่ Pronto เราใช้ระบบ Multisite ของ WordPress ดูแลเว็บไซต์ของลูกค้าเป็นพันกว่าเว็บไซต์ ทำให้การดูแล โดยเฉพาะเรื่องความปลอดภัยของแต่ละไซต์นั้นทำได้ค่อนข้างลำบาก เวลาตรวจสอบอะไรกับไซต์หนึ่งสักที ก็ต้องมานั่งกรอง log ให้มีแต่ข้อมูลไซต์ที่เราต้องการตรวจสอบ ถ้าใครเคยใช้ Multisite ก็น่าจะพอนึกภาพออกเนอะ เพราะ log มันเก็บไว้ที่เดียวกันหมดทุกไซต์ ต่างกับแยกแต่ละเว็บออกเป็นระบบส่วนตัว ซึ่งแบบนี้เราสามารถดู log เฉพาะของเว็บไซต์นั้นได้ทันที

ปัญหาอีกอย่างคือเรื่อง infrastructure ที่เราต้องไปดูแล ต้องคิดถึงการเก็บข้อมูล เพราะเนื่องจากข้อมูล log จะเป็นข้อมูลที่ไหลเข้ามาเรื่อยๆ อยู่แล้ว ไฟล์ log ก็จะยิ่งใหญ่ขึ้นเรื่อยๆ ถ้าจัดการเก็บเองแล้วคอย rotate เองเรื่อยๆ ก็คงเปลืองแรงไม่น้อย ยิ่งถ้าข้อมูลเก็บอยู่ในไฟล์ ก็คงจะลำบากที่จะดึงออกมาตรวจสอบ หรือเอาข้อมูลเหล่านั้นมาวิเคราะห์ (data analytics)