add_action() เป็นฟังก์ชันสำหรับเรียกใช้งาน Hook ของ WP ที่เอาไว้ให้นักพัฒนาสามารถเขียน code เพิ่มเติมเข้าไปได้ โดยที่ไม่ต้องไปแก้ไขไฟล์หลักของ WP ตรง ๆ ซึ่งเป็นวิธีที่ผิดและไม่ควรทำอย่างยิ่ง เพราะหากเราต้องการจะแก้ไขหรือเพิ่มเติมฟังก์ชันของเราเข้าไปในส่วนใดส่วนหนึ่งของ WP โดยการเข้าไปแก้ไขไฟล์ในโฟล์เดอร์ wp-admin หรือ wp-include เป็นวิธีที่ผิด เพราะจะทำให้เกิดปัญหาตอนเราอัพเดท WP ของเรา เพราะไฟล์ที่เราแก้ไขก็จะถูกทับด้วยไฟล์ใหม่ที่ถูกอัพเดทมากจาก WP นั่นเอง

ดังนั้น WP จึงได้สร้างฟังก์ชัน add_action มาให้เพื่อให้เราสามารถเขียน code ของเราเพิ่มไปยังส่วนใดส่วนหนึ่งของ WP ได้โดยไม่ต้องไปแตะ Code ในส่วนที่เป็นไฟล์ Core ของ WP

รูปแบบฟังก์ชัน add_action()

add_action( string $tag, callable $function_to_add, int $priority = 10, int $accepted_args = 1 )

คำอธิบายของค่าพารามิเตอร์แต่ละตัว

  • string $stag ค่าพารามิเตอร์ตัวนี้คือชื่อของ hook ที่เราต้องการจะเรียกใช้ เช่น ‘wp_head’
  • callable $function_to_add ค่าพารามิเตอร์ตัวนี้คือชื่อฟังก์ชันของเราที่เราเขียนขึ้นมาเอง เพื่อเพิ่ม code ของเราเข้าไปใน hook ที่เรากำหนด
  • int $priority ค่าพารามิเตอร์ตัวนี้คือการจัดลำดับการทำงานให้กับมัน ว่าจะให้มันทำงานเป็นลำดับที่เท่าไหร่ ค่าเริ่มต้นคือ 10
  • int $accepted ค่าพารามิเตอร์ตัวนี้คือการกำหนดจำนวนพารามิเตอร์ของฟังก์ชันเราว่ามีได้กี่พารามิเตอร์ ค่าเริ่มต้นคือ 1

วิธีการใช้งาน add_action()

อันดับแรกเลยเราต้องรู้ก่อนว่าเราต้องการจะเรียก hook ตัวไหน รายการ hook ทั้งหมดของ WP คลิกดูได้ที่นี่

ในตัวอย่างนี้เราจะมายกตัวอย่างการเรียก hook ที่ชื่อว่า wp_head กัน

เจ้า hook ที่ชื่อว่า wp_head นี้มันเกิดขึ้นหลัง WP ได้ทำการสร้าง code ทั้งหมดที่อยู่ภายในแท็ก <head></head> เสร็จสิ้น หลังจากเสร็จสิ้น WP ก็สร้าง hook ที่ชื่อว่า wp_head ขึ้นมาให้เหล่านักพัฒนาทั้งหลายสามารถที่จะเรียกใช้ hook wp_head เพื่อเขียน code ตัวเองเพิ่มต่อจาก code เดิมที่ WP ทำเอาไว้ได้ ตัวอย่างเช่น ผมต้องการจะใส่ code ด้านล่างนี้เข้าไปใน <head>

<style>
 .wp_head_example {
 background-color : #f1f1f1;
 }
 </style>

อย่างแรกเลยผมก็จะสร้าง function ขึ้นมาใหม่หนึ่งฟังก์ชัน

function add_my_style_to_head() {
 ?> 
<style> .wp_head_example { 
background-color : #f1f1f1; 
} 
</style> 
<?php
}

หลังจากที่ผมสร้าง function เสร็จเรียบร้อยแล้ว ผมก็ต้องจับเจ้าฟังก์ชันของผมยัดใส่ add_action() ซึ่งจะได้ดังนี้

add_action(‘wp_head’, ‘add_my_style_to_head’);

Code ที่สมบูรณ์ก็จะได้เป็นดังนี้

function add_my_style_to_head() {
 ?> 
<style> .wp_head_example { 
background-color : #f1f1f1; 
} 
</style> 
<?php
}
add_action('wp_head', 'add_my_style_to_head');