มาทำความรู้จักกับ WordPress Hooks ( Hook WP ) คืออะไร

WordPress Hooks

WordPress เว็บไซต์สำเร็จรูปช่วยสานฝันให้คนอยากมีเว็บสวยๆ เอาไว้ต่อยอดธุรกิจได้ ไม่ว่าใครก็สร้างเว็บไซต์ของตัวเองได้ง่ายๆ ไม่จำเป็นต้องมีความรู้เรื่องโค้ด หรือมีความรู้ด้านโปรแกรมมิ่งเลย อยากดันให้เว็บติดหน้าแรกการค้นหาสามารถทำ SEO ได้ไม่ยากมีปลั๊กอินหลายตัวรองรับ เช่น Yoast SEO สำหรับคนที่อยาก advance ต้องการใช้งาน WordPress ในระดับความยากแบบขั้นสูงจำเป็นมากที่ต้องรู้จักกับ WordPress Hooks

WordPress Hooks ( Hook WP ) คืออะไร

WordPress Hooks คือ การเพิ่ม ปรับแต่ง แก้ไขโค้ดธีมหรือปลั๊กอินของ WordPress โดยที่เราไม่จำเป็นต้องไปยุ่งกับโค้ดจริง ผลดีที่เกิดขึ้นคือเราสามารถปรับแต่งหน้าตาของเว็บไซต์เราหรือความสามารถของเว็บไซน์ให้ตรงตามความต้องการของเราได้ อยากให้เว็บไซน์มีหน้าตาแบบไหนเรากำหนดเองได้เลย หากเราสร้างปลั๊กอินหรือธีมขึ้นมาเองสามารถสร้าง Custom Hooks ในแบบเฉพาะเจาะจงสำหรับธีมหรือปลั๊กอินของเราได้เช่นกัน

WordPress Hooks จะแบ่งออกเป็นกี่ประเภท อะไรบ้าง

WordPress Hooks แบ่งออกเป็น 2 ประเภทได้แก่ Actions Hooks และ Filters Hooks  ซึ่งทั้งสองประเภทนี้ มีวิธีการใช้งานที่แตกต่างกันออกไป รายละเอียดมีดังต่อไปนี้

1.Action WordPress

Actions Hooks คือ Hooks ที่เราสามารถเข้าไปเพิ่มหรือลด อะไรบางอย่างได้ตามความต้องการ แต่จะไม่สามารถแก้ไขโค้ดเดิมได้ การสร้าง Actions มีดังต่อไปนี้

  • เริ่มต้นด้วยการสร้างฟังก์ชัน Callback หรือฟังก์ชันเรียกกลับ ในกรณีที่เป็นฟังก์ชันปกติทั่วไปที่เราสร้างขึ้น โดยสามารถเก็บไว้ในไฟล์ Funtions.php หรือจะเป็นที่ไหนก็ได้ ที่เราสามารถเรียกใช้งานได้ ซึ่งฟังก์ชันนี้เลือกได้ว่าจะใช้พารามิเตอร์ หรือไม่ใช้ก็ได้
  • ต่อมาเป็นการเพิ่ม Hooks ให้กับฟังก์ชัน Callback (Assign hook your callback function) วิธีการคือเราจะเพิ่มคำสั่ง add-action() เพิ่มแอคชั่น ฮุก กับฟังก์ชันดังกล่าว ซึ่ง add-action() มีประกอบไปด้วยพารามิเตอร์ภายใน 2 ตัวเป็นอย่างน้อย ตัวแรกเป็นชื่อของ Hooks นี้ ส่วนตัวที่สองเป็นชื่อฟังก์ชัน Callback function
  • ในขั้นตอนการ Hooks เรายังสามารถพิมพ์พารามิเตอร์เสริมเป็นตัวที่ 3 ได้ โดยเป็นพารามิเตอร์ที่บอกลำดับความสำคัญ (Priority) ของฟังก์ชันที่ใช้ในการฮุก โดย Priority จะมีตัวเลขเป็นค่าบวกอยู่ระหว่าง 1-20 สามารถเพิ่มได้จนถึง 100 ค่าเริ่มต้นกำหนดที่ 10 ถ้าไม่ใส่ค่าใดๆ เลย ฟังก์ชันที่มีค่ามากต่อจากฟังก์ชันที่มีค่าน้อยกว่า
  • ส่วนท้ายสุดของพารามิเตอร์ จะเป็นตัวเลขเช่นกัน มีหน้าที่กำหนดจำนวนพารามิเตอร์ที่เราต้องการเรียกใช้ฟังก์ชัน

2.Filters WordPress

Filters Hooks คือ Hooks ที่สามารถใช้แก้ไขข้อมูลในขณะที่ WordPress กำลังทำการประมวลผลได้ หรือ ธีม, ปลั๊กอิน สำหรับกระบวนการสร้างมีดังต่อไปนี้

  • สร้างฟังก์ชั่นเรียกกลับ ในกรณีนี้คือ ฟังก์ชันปกติของเราที่สร้างขึ้นมา สามารถจัดเก็บไว้ในไหล์ functions.php หรือที่ไหนก็ได้ ที่สามารถเรียกใช้งานได้ และฟังก์ชันนี้จะมีหรือไม่มีพารามิเตอร์ก็ได้
  • การเพิ่มฮุกให้กับฟังก์ชันเรียกกลับ (Assign hook your callback function) เป็นขั้นตอนถัดมา วิธีการคือเราจะเข้าไปเพิ่มคำสั่ง add-filters() เพื่อ Filters Hooks ให้กับฟังก์ชันดังกล่าว เช่นกันคือ ในส่วนของ add-filters()จะต้องมีพารามิเตอร์ภายใน 2 ตัวเป็นอย่างต่ำ
  • Filters Hooks สามารถมีพารามิเตอร์เป็นตัวเลขขึ้นมาได้ ไม่ต่างจาก Action Hooks เป็นเรื่องของลำดับความสำคัญ (Priority) และะจำนวนพารามิเตอร์

เราสารามารถสร้าง Hook เองได้ไหม ?

เราสามารถสร้าง Custom Hooks ขึ้นมาเองได้ โดยไม่จำเป็นต้องอ้างอิงกับ ฮุก เวิร์ดเพจ การสร้างหรือการลงทะเบียนเหมือนกันกับ Hooks ปกติ แต่ในช่องของพารามิเตอร์แรก สามารถกำหนดชื่อตนเองได้เลย แต่ชื่อที่ตั้งขึ้นมานั้นจะต้องชื่อปลั๊กอินหรือธีมตรงด้านหน้าด้วย เป็นการป้องกันการซ้ำซ้อนของโค้ดนั่นเอง ยกตัวอย่างเช่น ในกรณีที่เราต้องการสร้างฮุกส่วนของเนื้อหาในอีเมล ให้มีชื่อธีม wporg_นำหน้า กลายเป็น wporg_email_body หากเขียนให้อยู่รูปแบบของฮุกจะได้ add_action( ‘wporg_email_body’, ‘myprefix_custom_email’);

สำหรับวิธีการเรียก ให้ใช้ do_action() สำหรับ Action Hooks นำไปวางยังตำแหน่งที่เราต้องการ และใช้ apply_filter() สำหรับ Filter Hook ในการแก้ไข

WordPress Hooks ( Hook WP ) ช่วยให้เราทำงานง่ายขึ้น ไม่ว่าจะเป็นการเพิ่ม ลด แก้ไขฟังก์ชันของธีม ปลั๊กอิน รวมถึง WordPress Core ซึ่งเราสามารถเขียนฮุกขึ้นมาเองได้ (custom hooks) หากเราใช้เป็นหรือนำไปใช้ช่วยเพิ่มความสะดวกและสามารถนำมาพัฒนาระบบของเราให้รวดเร็วขึ้นได้ และทั้งหมดนี้หวังว่าทุกคนจะเข้าใจมากขึ้นว่า WordPress Hooks คืออะไร แบ่งออกเป็นกี่ประเภท กระบวนการสร้างทำอย่างไร ข้อมูลเหล่านี้หวังว่าจะมีประโยชน์กับทุกๆ คนไม่มากก็น้อย