Hook (Action & Filter) trong WordPress — “bí mật sức mạnh” giúp bạn can thiệp vào mọi giai đoạn xử lý của WordPress mà không cần sửa code gốc.
Hook là gì?
Hook là cách WordPress cho phép bạn “chen code của mình vào” một thời điểm nào đó trong hệ thống.
Có 2 loại:
Loại Hook | Dùng để làm gì? | Ví dụ |
---|---|---|
Action | Thêm hành động tại một thời điểm | Thêm menu, chèn JS, gửi email |
Filter | Thay đổi dữ liệu trước khi xuất hiện | Sửa nội dung bài viết, đổi title |
1. Action Hook
Ví dụ: Chèn dòng chữ vào cuối trang web
Thêm vào functions.php
:
function gfon_footer_message() {
echo "<p style='text-align:center; color:gray;'>© 2025 - Học WordPress cùng Gfon!</p>";
}
add_action('wp_footer', 'gfon_footer_message');
add_action()
nghĩa là: “Khi chạy tớiwp_footer
, hãy thực hiện hàmgfon_footer_message()
.”
Một số Action hook phổ biến:
Hook tên gì | Kích hoạt ở đâu? |
---|---|
wp_head | Trong phần <head> |
wp_footer | Trước thẻ </body> |
init | Khi WordPress bắt đầu khởi động |
after_setup_theme | Khi theme đã sẵn sàng |
admin_menu | Khi tạo menu trong admin |
save_post | Khi lưu bài viết |
2. Filter Hook
Filter dùng để sửa đổi dữ liệu trước khi hiển thị
Ví dụ: Thêm icon vào tiêu đề bài viết
function gfon_add_icon_to_title($title) {
if ( is_singular('post') ) {
return '📝 ' . $title;
}
return $title;
}
add_filter('the_title', 'gfon_add_icon_to_title');
add_filter()
nghĩa là: “Trước khi hiển thịthe_title
, chạy hàm của mình để thay đổi.”
Một số Filter phổ biến:
Filter tên gì | Tác dụng |
---|---|
the_title | Sửa tiêu đề bài viết |
the_content | Sửa nội dung bài viết |
excerpt_length | Đổi số từ đoạn trích |
excerpt_more | Sửa chuỗi “…” ở đoạn trích |
wp_nav_menu_items | Thêm item vào menu |
body_class | Thêm class CSS vào thẻ <body> |
Ví dụ nâng cao:
Đổi đoạn trích từ 55 → 20 từ
function gfon_excerpt_length($length) {
return 20;
}
add_filter('excerpt_length', 'gfon_excerpt_length');
Thêm class CSS tùy chỉnh vào body
function gfon_add_body_class($classes) {
if ( is_page('gioi-thieu') ) {
$classes[] = 'gioi-thieu-page';
}
return $classes;
}
add_filter('body_class', 'gfon_add_body_class');
Kết hợp cả Action & Filter
Bạn có thể:
- Dùng
action
để chèn code - Dùng
filter
để biến đổi dữ liệu - Dùng cả hai để tạo plugin hoặc tùy biến theme cực mạnh
Tổng kết
Hook loại gì? | Khi nào dùng |
---|---|
Action | Khi bạn muốn thêm hành động |
Filter | Khi bạn muốn thay đổi nội dung |
- Dùng
add_action('hook_name', 'ten_ham');
- Dùng
add_filter('hook_name', 'ten_ham');
Thảo luận