Action Hook là gì? Nó khác Filter Hook như thế nào ??!

Hôm trước mình đã trình bài khái niệm cơ bản về Filter Hook trong WordPress. Hôm nay mình sẽ trình bày một khái niệm khác là Action Hook.

Cũng giống như Filter, Action Hook cũng là một điểm neo trong mã nguồn của WordPress, theme hoặc plugin được nhà phát triển tạo ra để giúp thêm hoặc bớt một hành động nào đó tại một chu trình nhất định.

Vậy đâu là điểm khác nhau giữa Action và Filter?
Action Hook: nó là các điểm liên quan đến xử lý hành động.
Filter Hook: nó là các điểm liên quan đến xử lý nội dung.

Các bạn có thể tham khảo qua ví dụ này để hiểu rõ hơn.
Ví dụ sau khi mình tạo child-theme thì mình có một file custom css với tên là “custom-style.css” và mình sẽ sử dụng một Action Hook được cung cấp bởi WordPress là “wp_enqueue_scripts” và thêm đoạn mã bên dưới vào file functions.php.

add_action( 'wp_enqueue_scripts', 'blogcuatoi_script' );
function blogcuatoi_script() {
   wp_enqueue_style( 'custom-style', get_stylesheet_directory_uri(). '/assets/style/custom-style.css', array(), '1.0.0' );
}

Đoạn mã trên sẽ giúp mình thêm 1 link css vào head của website mà không cần phải chỉnh sửa nội dụng của file header.php

Cấu trúc thư mục

Và khi các bạn mở trang web lên sẽ thấy kết quả như sau

kết quả sau khi thêm custom-style

Tạo Action Hook cho riêng mình.

Bên trên là cách sử dụng một Hook đã được cung cấp sẵn. Bây giờ mình sẽ đi qua các bước để tạo một Action Hook.

Để tạo mới một Action Hook thì mình cần sử dụng function “do_action

<?php 
    do_action( 'blogcuatoi_hook' );
?>

Và để móc các function vào hook “blogcuatoi_hook” thì mình sẽ sử dụng function “add_action

<?php 
    add_action( 'blogcuatoi_hook', 'print_hello_world', 20 );
    add_action( 'blogcuatoi_hook', 'print_chao_khach_ghe_tham', 10 );
    
    function print_hello_world() {
        echo '<h1>Hello World</h1>';
    }

    function print_chao_khach_ghe_tham() {
        echo '<h1>Chào bạn đến với BlogCuaToi</h1>';
    }

?>

Như các bạn thấy trong function add_action mình có truyền thêm 1 tham số thứ 3. Nó được gọi là thứ tự ưu tiên (priority). Giá trị của priority càng nhỏ thì function đi kèm sẽ được thực hiện trước.
Trong ví dụ trên mặc dù các bạn thấy mình gọi function “print_hello_world” trước function “print_chao_khach_ghe_tham” nhưng vì mình set priority của “print_hello_world” là 10“print_chao_khach_ghe_tham” là 20 nên function “print_chao_khach_ghe_tham” sẽ được chạy trước.
Kết quả sẽ giống như sau

Kết quả của action hook

Và cuối cùng, giống như Filter Hook các bạn có function “remove_action” để loại bỏ một filter nào đó thì Action Hook cũng có function “remove_action”. Các bạn lưu ý khỉ sử dụng “remove_action” thì cần chú ý đến tham số priority giá trị của nó phải giống với lúc add_action nhé

<?php 
    remove_action( 'blogcuatoi_hook', 'print_hello_world', 20 );
?>

Và kết quả sẽ là

Remove Action

Kết: nhìn chung việc sử dụng action_hook khá đơn giản. Nếu các bạn tìm hiểu các action_hook có sẵn của WordPress core, theme hoặc plugin thì nó sẽ giúp ích cho các bạn rất nhiều trong việc chỉnh sửa theme hoặc tạo plugin cho riêng mình.

Nếu bạn thấy hay hoặc có ích vui lòng để lại một like hoặc một comment.
Nếu mình có gì sai sót vui lòng để lại góp ý của bạn để mình có thể hoàn thiện hơn.

1 BÌNH LUẬN

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây