จุดเริ่มต้นที่จะต้องรู้สำหรับคนที่อยากจะเป็นเวิร์ดเพรสปลักอินเดเวลอปเปอร์ ก็คือ hook ฮุ๊กอุ๊กๆ ไอ้ฮุกนี่คืออะไร แล้วทำไมจำเป็นต้องรู้ ผมจะเล่าให้ฟัง
เวิร์ดเพรสนั้นตอนที่สร้างระบบขึ้นมาใหม่ๆ เขาก็อยากที่จะให้ใครๆก็สามารถมาเขียนโค้ดขยายต่อความสามารถของเวิร์ดเพรสได้ แต่เขาไม่ได้อยากจะให้แก้โค้ดของเวิร์ดเพรสโต้งๆ เพราะถ้าทำอย่างนั้น เวลาเวิร์ดเพรสมีการอัปเดตโค้ด คนที่เอาไปใช้และแก้ไขโค้ดไปก็จะเละเทะหมด
เขาจึงคิดแนวคิดขึ้นมาได้อย่างหนึ่งว่า ถ้าเรากำหนดให้โค้ดของเวิร์ดเพรส ไปเรียกฟังก์ชั่นจากภายนอกเป็นระยะๆ คนก็สามารถเขียนฟังก์ชั่นแทรกเข้ามาในเวิร์ดเพรสได้ แนวคิดนี้ทำให้เกิดสิ่งหนึ่งที่เรียกว่า hook
ดูตัวอย่างนี่
add_action( 'init', 'process_post' );
function process_post() {
if( isset( $_POST['unique_hidden_field'] ) ) {
// process $_POST data here
}
}
อันนี้เป็นการบอกว่าเมื่อโค้ดรันมาถึงช่วง init ให้รันฟังก์ชั่นชื่อ process_post ของเราด้วย
ถามว่าแล้วเราจะรู้ได้ไงว่าเวิร์ดเพรสมันมี hook อะไรให้ใช้บ้าง ตอบว่าดูในนี่ครับ https://developer.wordpress.org/reference/hooks/
หรือดูในโค้ดของเวิร์ดเพรส หาคำว่า do_action
คุณพอเก็ตอะไรบางอย่างไหม do_action, add_action ครับผม do_action มันจะใช้คู่กับ add_action ในโค้ดเวิร์ดเพรสนั้นเขาจะวาง do_action ไว้เป็นระยะๆ เมื่อโค้ดรันมาถึง do_action มันก็จะไปไล่หาว่ามีคำสั่ง add_action ที่มีพารามิเตอร์แรกตรงกันไหม ถ้ามีมันก็จะรันฟังก์ชั่นใน add_action
ถ้าเราจะจินตนาการในหัวว่า do_action เป็นการเจาะรูไว้ แล้ว add_action เอาฟังก์ชั่นเข้าไปเสียบในรูนั้น ก็พอได้
hook นั้นยังมีอีกตัวนึงชื่อว่า add_filter ซึ่งไว้ใช้ในกรณีเปลี่ยนแปลงค่าในตัวแปร add_filter นี้จะใช้คู่กับ apply_filter
ไว้จะมาเล่าต่อให้ละเอียดว่า filter นั้นทำงานยังไง