WordPress nổi tiếng với khả năng mở rộng và tùy biến linh hoạt nhờ vào Hook và Filter. Đây là hai khái niệm cốt lõi giúp bạn thêm hoặc thay đổi chức năng mà không cần chỉnh sửa trực tiếp mã nguồn gốc. Nếu bạn mới làm quen với WordPress, bài viết này sẽ giúp bạn hiểu và áp dụng Hook và Filter một cách dễ dàng. Khám phá cách sử dụng Hook và Filter trong WordPress để tùy chỉnh website mà không chỉnh sửa code gốc. Cùng thiết kế websitedanang hướng dẫn chi tiết, dễ hiểu cho người mới bắt đầu.
Hook trong WordPress là gì?
Trong WordPress, Hook được xem như những “điểm móc” hoặc “điểm dừng” trong quá trình xử lý của hệ thống. Tại mỗi điểm này, bạn có thể chèn thêm chức năng hoặc can thiệp vào dữ liệu thông qua những đoạn code do chính bạn viết.

Điểm mạnh của Hook là:
- Giúp bạn mở rộng hoặc thay đổi chức năng của WordPress, theme, plugin mà không cần chỉnh sửa trực tiếp mã nguồn gốc (core).
- Code của bạn sẽ chỉ “gắn” vào đúng nơi cần thiết, nhờ đó dễ quản lý, dễ bảo trì và không lo bị ghi đè khi cập nhật WordPress.
- Hook trong WordPress chia thành 2 loại chính: Action Hook và Filter Hook.
Action Hook
Action Hook cho phép bạn thêm mới một chức năng vào một sự kiện (event) nhất định trong WordPress. Hiểu đơn giản, khi một sự kiện xảy ra (ví dụ: người dùng đăng ký, bài viết được xuất bản, hoặc website bắt đầu tải), bạn có thể “móc” vào đó một hành động (action) để chạy thêm code.
Một số ví dụ điển hình của Action Hook:
- Gửi email chào mừng khi có người đăng ký tài khoản.
- Thêm đoạn script hoặc stylesheet khi website load.
- Tự động đăng thông báo lên mạng xã hội khi có bài viết mới.
Ví du code:
add_action('user_register', 'send_welcome_email');
function send_welcome_email($user_id) {
$user_info = get_userdata($user_id);
wp_mail(
$user_info->user_email,
'Chào mừng bạn đến với website!',
'Cảm ơn bạn đã đăng ký tài khoản. Chúc bạn có trải nghiệm tuyệt vời!'
);
}
Giải thích:
user_register là hook name, sự kiện xảy ra ngay khi có một user mới được tạo.
send_welcome_email là hàm bạn tự định nghĩa để gửi email.
Khi một tài khoản mới đăng ký, WordPress sẽ tự động gọi hàm này.
Filter Hook
Ngược lại với Action Hook, Filter Hook cho phép bạn can thiệp và thay đổi dữ liệu trước khi nó được hiển thị ra ngoài hoặc trước khi được lưu trữ.
Một số ví dụ điển hình của Filter Hook:
- Thay đổi tiêu đề bài viết trước khi hiển thị.
- Chỉnh sửa nội dung bình luận trước khi lưu vào database.
- Thêm icon hoặc text vào trước/sau nội dung.
Ví dụ code:
add_filter('the_title', 'custom_post_title');
function custom_post_title($title) {
return '🔥 ' . $title;
}
Giải thích:
the_title là filter hook dùng để xử lý tiêu đề bài viết.
Hàm custom_post_title nhận dữ liệu $title gốc, sau đó thêm ký tự “🔥 ” vào trước tiêu đề.
WordPress sẽ hiển thị tiêu đề mới thay vì tiêu đề gốc.
Điểm khác biệt so với Action Hook là: Filter Hook luôn yêu cầu bạn phải trả về một giá trị mới (sau khi đã chỉnh sửa), còn Action Hook thì chỉ cần chạy code là đủ.
Sự khác nhau giữa Action và Filter
Mặc dù Action Hook và Filter Hook đều là Hook trong WordPress, nhưng chúng có cách hoạt động và mục đích khác nhau. Bạn có thể tham khảo bảng so sánh chi tiết dưới đây:
| Đặc điểm | Action Hook | Filter Hook |
| Mục đích | Thêm chức năng mới khi một sự kiện diễn ra. | Thay đổi hoặc xử lý dữ liệu trước khi hiển thị ra ngoài hoặc trước khi lưu trữ. |
| Giá trị trả về | Không yêu cầu giá trị trả về. Chỉ cần chạy code là đủ. | Bắt buộc phải trả về dữ liệu đã chỉnh sửa (nếu không sẽ gây lỗi hoặc dữ liệu trống). |
| Ví dụ thường gặp | – Gửi email khi có người đăng ký. – Thêm widget hoặc menu mới. – Chèn CSS/JS khi load trang. |
– Thay đổi tiêu đề bài viết (the_title).– Chỉnh sửa nội dung ( the_content).– Sửa excerpt hoặc bình luận trước khi hiển thị. |
| Cách hình dung | Giống như thêm “một công việc mới” vào danh sách hành động. | Giống như “biên tập lại nội dung” trước khi xuất bản. |
Cách sử dụng Hook và Filter trong WordPress
Trong WordPress, cả Action Hook và Filter Hook đều có cấu trúc cú pháp khá giống nhau. Điểm khác biệt chủ yếu nằm ở cách mà chúng xử lý dữ liệu.
Cú pháp cơ bản của Action:
add_action('hook_name', 'function_name', $priority, $accepted_args);
- hook_name: Tên hook có sẵn trong WordPress, theme hoặc plugin mà bạn muốn “móc” vào. Ví dụ:
init,wp_footer,user_registe. - function_name: Tên hàm bạn định nghĩa để thực thi khi hook được gọi.
- priority: Thứ tự ưu tiên chạy hàm (số càng nhỏ thì chạy trước). Mặc định =
10. - accepted_args: Số lượng tham số mà hàm của bạn có thể nhận từ hook.
Cú pháp cơ bản của Filter:
add_filter('hook_name', 'function_name', $priority, $accepted_args);
-
- hook_name: Tên filter hook mà bạn muốn thay đổi dữ liệu (ví dụ:
the_title,the_content,excerpt_length).
- hook_name: Tên filter hook mà bạn muốn thay đổi dữ liệu (ví dụ:
- function_name: Hàm xử lý dữ liệu.
- priority: Thứ tự chạy filter. Mặc định =
10. - accepted_args: Số lượng tham số mà filter truyền cho hàm (thường là 1, nhưng có filter truyền nhiều tham số).
Lưu ý quan trọng:
- Với Action, hàm của bạn không cần trả về dữ liệu.
- Với Filter, hàm của bạn phải return dữ liệu (nếu không WordPress sẽ bị lỗi hoặc không hiển thị gì)

Một số Hook phổ biến trong WordPress
WordPress cung cấp hàng trăm hook khác nhau, nhưng dưới đây là những hook phổ biến và hữu ích nhất mà người mới nên biết:
1. init – Khởi tạo WordPress : Hook này chạy khi WordPress vừa bắt đầu load, thích hợp để đăng ký custom post type, custom taxonomy hoặc thực hiện cài đặt ban đầu.
2. wp_enqueue_scripts – Thêm CSS, JS: Dùng để tải file CSS và JavaScript đúng cách, tránh lỗi xung đột hoặc load trực tiếp trong header.
3. the_content – Thay đổi nội dung bài viết: Filter này cho phép bạn thay đổi nội dung bài viết trước khi hiển thị.
4. comment_text – Thay đổi nội dung bình luận: Cho phép bạn lọc và thay đổi nội dung bình luận trước khi hiển thị.
5. login_redirect – Chuyển hướng sau khi đăng nhập: Cho phép tùy chỉnh trang đích mà người dùng sẽ được chuyển đến sau khi đăng nhập thành công.
Lợi ích khi sử dụng Hook và Filter
Sử dụng Hook và Filter mang lại nhiều lợi ích quan trọng cho việc phát triển và quản trị website WordPress. Dưới đây là 3 ưu điểm nổi bật:
- Tùy chỉnh linh hoạt: Bạn có thể mở rộng chức năng website theo nhu cầu riêng mà không phải chỉnh sửa trực tiếp mã nguồn core.
Ví dụ: Khi khách hàng hoàn tất đơn hàng WooCommerce, bạn có thể “móc” thêm Action để gửi SMS xác nhận, trong khi tính năng này không có sẵn trong plugin gốc. - Dễ bảo trì và nâng cấp: Một trong những rủi ro lớn nhất khi chỉnh sửa trực tiếp core WordPress hoặc plugin là code sẽ bị ghi đè khi cập nhật. Hook và Filter giúp bạn tách riêng phần tùy chỉnh, đảm bảo rằng khi WordPress hoặc plugin được update, code của bạn vẫn hoạt động bình thường và không bị mất đi.
- Tái sử dụng cao: Một đoạn code Hook hoặc Filter có thể áp dụng ở nhiều dự án khác nhau mà không cần viết lại từ đầu. Hàm filter rút ngắn excerpt (tóm tắt bài viết) có thể copy và dùng lại cho nhiều website WordPress khác nhau.
Hook và Filter không chỉ là hai khái niệm kỹ thuật, mà còn là nền tảng của sự linh hoạt trong WordPress. Nhờ chúng, WordPress trở thành một hệ sinh thái mở, nơi lập trình viên có thể tùy biến mọi khía cạnh của website mà không phải lo lắng về việc làm hỏng core hay mất dữ liệu sau khi nâng cấp. Điểm đặc biệt quan trọng là: dù bạn bổ sung hay chỉnh sửa chức năng, tất cả đều tách biệt với mã nguồn gốc (core). Điều này đảm bảo website an toàn, dễ bảo trì, dễ nâng cấp, và quan trọng hơn cả – bạn hoàn toàn làm chủ được cách WordPress vận hành.
Nếu bạn là người mới, việc làm quen với Hook & Filter có thể hơi phức tạp lúc ban đầu. Nhưng một khi bạn đã hiểu, bạn sẽ thấy WordPress giống như một bộ khung vững chắc, sẵn sàng để bạn “lắp ghép” những tính năng theo nhu cầu riêng. Đây chính là lý do WordPress không chỉ là một CMS phổ biến, mà còn là một nền tảng phát triển web mạnh mẽ, phù hợp cho cả blogger cá nhân lẫn doanh nghiệp lớn.
Và nếu bạn không muốn tự mày mò từng dòng code, mà vẫn muốn sở hữu một website WordPress chuẩn SEO – tốc độ nhanh – bảo mật tốt – dễ dàng mở rộng, hãy để Webo.vn
đồng hành cùng bạn. Với kinh nghiệm triển khai hàng trăm dự án, Webo sẽ giúp bạn có được một website tối ưu từ nền tảng đến trải nghiệm người dùng, sẵn sàng để phát triển kinh doanh lâu dài.


