Hướng dẫn làm việc với Hook trong WordPress
Với mỗi một ngôn ngữ lập trình, CMS, Framework sẽ có những cách khác nhau để can thiệp vào những class, function của hệ thống (core). Có nhiều Framework, CMS sử dụng sự kiện (event), ghi đè (overide) các class có sẵn,…Còn với WordPress sẽ thông qua Hook.
Trong bài này Hoàng An sẽ hướng dẫn bạn tìm hiểu về Hook và cách làm việc với Hook trong WordPress.
Hook là gì?
Hook hiểu đơn giản nhất là danh sách các tham số được xây dựng sẵn trong hệ thống core của WordPress. Ngoài ra, WordPress còn cho phép các nhà phát triển tự xây dựng Hook riêng để người khác phát triển được trên những hook đó. (Ví dụ Hook trong các theme, plugin)
Trong hook có 2 loại:
- Hook Filter: Các bộ lọc xử lý liên quan đến nội dung
- Hook Action: Các xử lý liên quan đến hành động
Hook Filter
Danh sách Hook Filter trong WordPress: https://codex.wordpress.org/Plugin_API/Filter_Reference
Trước khi sử dụng bạn nên xem hướng dẫn sử dụng các Hook đó để biết được các tham số truyền vào.
Ví dụ:
add_filter( 'the_content', 'filter_the_content_in_the_main_loop', 1 ); function filter_the_content_in_the_main_loop( $content ) { // Check if we're inside the main loop in a single Post. if ( is_singular() && is_main_query() ) { return $content . esc_html__( 'I’m filtering the content inside the main loop', 'wporg'); } return $content; }
Các thao tác với Hook Filter
Thêm hook
add_filter ( $tag, $callback, $priority = 10, $accepted_args = 1 )
Trong đó:
$tag
: Tên hook filter. Nếu nhập tên không có sẵn trong hệ thống WordPress hoặc không có trong các theme, plugin thì sẽ tạo ra hook mới$callback
: Tên hàm sẽ thực thi hook filter. Cần thêm bước định nghĩa hàm nữa$priority
: Thứ tự ưu tiên thực hiện hàm callback (Mặc định là 10). Thứ tự càng thấp sẽ ưu tiên thực hiện trước$accepted_args
: Tổng số tham số trong hàm callback
Ví dụ:
add_filter ( 'the_title', 'add_custom_title', 10, 1 ); function add_custom_title($title){ return $title.' - custom title'; }
Sử dụng hook
Để sử dụng hook filter, bạn chỉ cần gọi qua hàm apply_filters()
. Lúc này dữ liệu sẽ được lọc qua hook filter rồi trả về kết quả.
$title = apply_filters('the_title', $title);
Xoá hook
Để làm được việc này, bạn cần phải xác định được tên hàm callback đã add_filter()
remove_filter($tag, $callback_remove, $priority = 10);
Trong đó:
$tag
: Tên hook filter cần xoá$callback_remove
: Tên hàm cần xoá$priority
: Thứ tự ưu tiên (Đã được thêm từ hàmadd_filter()
)
Hook Action
Danh sách Hook Action trong WordPress: https://codex.wordpress.org/Plugin_API/Action_Reference
Trước khi thực hiện thao tác với Hook Action, bạn cần phải tìm hiểu các tham số truyền vào của Hook đó.
Ví dụ:
function add_custom_script_footer() { ?> <script type="text/javascript"> //Code here </script> <?php } add_action( 'wp_footer', 'your_function', 20);
Ở ví dụ trên, tôi đã thực hiện việc add thẻ script xuống footer của website
Các thao tác với Hook Action
Thêm hook
add_action ($tag, $callback, $priority = 10, $accepted_args = 1 )
Trong đó:
$tag
: Tên hook action. Nếu nhập tên không có sẵn trong hệ thống WordPress hoặc không có trong các theme, plugin thì sẽ tạo ra hook mới$callback
: Tên hàm sẽ thực thi hook action. Cần thêm bước định nghĩa hàm nữa$priority
: Thứ tự ưu tiên thực hiện hàm callback (Mặc định là 10). Thứ tự càng thấp sẽ ưu tiên thực hiện trước$accepted_args
: Tổng số tham số trong hàm callback
Sử dụng hook
Để sử dụng Hook Action, bạn chỉ cần gọi qua hàm do_action()
Ví dụ:
do_action('wp_footer');
Xoá hook
Để làm được điều này, bạn cần phải xác định tên hàm được gọi trong hàm add_action()
remove_action($tag, $callback_remove, $priority = 10);
Trong đó:
$tag
: Tên hook action cần xoá$callback_remove
: Tên hàm cần xoá$priority
: Thứ tự ưu tiên (Đã được thêm từ hàmadd_action()
)
Lưu ý: Nếu muốn sửa hook bạn cần phải xoá đi rồi thêm function mới. Nếu không thực hiện xoá trước giá trị function sẽ được thêm tiếp vào hook hiện có (Thêm trước hay sau phụ thuộc vào độ ưu tiên của hàm add_action, add_filter)
Kết luận
Trên đây, tôi có chia sẻ kinh nghiệm về việc thao tác với Hook trong WordPress. Cái khó của làm việc với Hooks chính là xác định được tên hook và loại hook cần thao tác. Đây là kiến thức rất quan trọng để có thể làm việc với các plugin như WooCommerce, LearnPress,…