Hook

Hook คือวิธีการที่ใช้ในการสร้างรูปแบบการปฏิสัมพันธ์ของโค้ดให้เหมาะสมกับธีม (Theme) เป็นต้น โดย Hook แบ่งออกเป็น 2 ประเภทคือ

  1. Action
  2. Filter

 

1.Action (การดำเนินการ)

ไวยากรณ์

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

 

การเพิ่ม action นั้นแบ่งออกเป็น 2 ขั้นตอนดังนี้

ขั้นตอนที่ 1 สร้างฟังก์ชันเรียกกลับ (Callback Function) ซึ่งจะทำการก็ต่อเมื่อมี action hook ไปยังฟังก์ชัน

function firstCallback(){
          // code
}

 

ขั้นตอนที่ 2 กำหนด (Hook) ไปยังฟังก์ชันเรียกกลับ (Callback function) โดยใช้ add_action()

function firstCallback(){
          // code
}

add_action('init', 'firstCallback');

 

พารามิเตอร์เพิ่มเติม

add_action() สามารถเพิ่มพารามิเตอร์ได้ 2 ตัว ประกอบไปด้วย int $priority และ int $accepted_args

  • int $priority (ลำดับความสำคัญ) ซึ่งจากขั้นตอนที่ 2 ของ add_action() ได้แทนค่าพารามิเตอร์เป็นตัวแรกเป็น init เพื่อเชื่อมต่อกับฟังก์ชัน และเพื่อให้แน่ใจว่าลำดับการทำงานของฟังก์ชันมีความแน่นอนสามารถกำหนดได้ 3 รูปแบบดังนี้
    • เพิ่มลำดับด้วยตัวเลขเป็นจำนวนเต็มบวกซึ่งโดยทั่วไปแล้วจะอยู่ที่ 1-20 (ทำงานเริ่มจากลำดับน้อย)
    • ลำดับที่เกินปกติแต่ไม่เกิน 100
    • ค่าเริ่มต้นซึ่งปกติจะมีค่าเท่ากับ 10 (กรณีที่ไม่มีการกำหนดลำดับความสำคัญ)

Priority ในทุกแบบนั้นจะทำงานเริ่มต้นจากค่าน้อยไปหาค่ามาก

 

ตัวอย่างการกำหนด Priority

add_action('init', 'firstFunction', 1);

add_action('init', 'lastFunction', 12);

add_action('init', 'normalFunction');

จากตัวอย่างด้านบน การทำงานตามลำดับเริ่มจากฟังก์ชัน firstFunction() ตามด้วย normalFunction() และสุดท้าย lastFunction()

  • int $accepted_args ในบางครั้งฟังก์ชันเรียกกลับจะมีข้อมูลพิเศษส่งไปยัง Hook ตัวอย่างเช่น save_post ที่ต้องการรับค่าพารามิเตอร์ 2 ตัวสามารถทำได้โดยใช้ add_action() และเพิ่มอาร์กิวเมนต์เป็น 4 ตัวดังนี้

add_action('save_post', 'middleFunction', 10 , 2);

จาก Hook ด้านบนเราสามารถสร้างฟังก์ชันเรียกกลับได้ดังนี้

function middleFunction($post_id , $post){

          //code

}

 

2. Filters

Filter ใช้ในการทำงานที่แยกออกไป ไม่ควรมีผลกระทบกับตัวแปรหรือเอาต์พุตอื่นภายนอก

ไวยากรณ์

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

 

  • $tag ชื่อตัวกรองที่จะเรียกกลับไปยังฟังก์ชัน
  • $function_to_add ชื่อฟังก์ชั่นเรียกกลับ
  • $priority ลำดับความสำคัญ
  • $accepted_args จำนวนอาร์กิวเมนต์

 

การเพิ่ม Filter ก็แบ่งออกเป็น 2 ขั้นตอนเช่นกัน ดังนี้

ขั้นตอนที่ 1 สร้างฟังก์ชันเรียกกลับ (Callback Function) โดยใช้รูปแบบเหมือนการสร้างฟังก์ชันทั่วไป

function filterFunctionDemo($title){
          return $title;
}

 

ขั้นตอนที่ 2 เพิ่มฟังก์ชันเรียกกลับไว้ที่ Hook โดยใช้ add_filter() ซึ่งภายในจะต้องส่งผ่านพารามิเตอร์อย่างน้อย 2 ตัว ตัวที่ 1 string $tag และตัวที่ 2 callable $function_to_add

function filterFunctionDemo($title){    
        return $title;
}

add_filter('title_name', 'filterFunctionDemo');

 

สรุปความแตกต่างระหว่าง action และ filter

  • Action จะรับและดำเนินการบางอย่างโดยไม่ส่งค่ากลับไปยัง Hook (หยุดการดำเนินงานปกติของโค้ด เพื่อที่จะทำอะไรบางอย่าง จากนั้นก็กลับสู่การทำงานปกติโดยที่ไม่มีการแก้ไขอะไร)
  • Filter จะรับและดำเนินการบางอย่างโดยที่จะทำการส่งค่ากลับไปยัง Hook เพื่อใช้งานต่อไป (ใช้ในการแก้ไขบางอย่างในลักษณะเฉพาะของโค้ด เพื่อให้โค้ดถูกใช้งานในภายหลัง)

หากคุณพบคำที่สะกดผิด เว้นวรรคไม่ถูกต้อง ฯ โปรดแจ้งให้เราทราบ โดยลากคลุม (highlight) ข้อความนั้น แล้วกด Ctrl + Enter

ไม่สามารถคัดลอกเนื้อหานี้

Spelling error report

The following text will be sent to our editors: