เรื่องต้องรู้เมื่อยูว์อยากเขียนปลักอินเวิร์ดเพรส

จุดเริ่มต้นที่จะต้องรู้สำหรับคนที่อยากจะเป็นเวิร์ดเพรสปลักอินเดเวลอปเปอร์ ก็คือ 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 นั้นทำงานยังไง