Đăng nhập

Lập trình WordPress: Hook (Action & Filter)

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 HookDùng để làm gì?Ví dụ
ActionThêm hành động tại một thời điểmThêm menu, chèn JS, gửi email
FilterThay đổi dữ liệu trước khi xuất hiệnSử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ới wp_footer, hãy thực hiện hàm gfon_footer_message().”

Một số Action hook phổ biến:

Hook tên gìKích hoạt ở đâu?
wp_headTrong phần <head>
wp_footerTrước thẻ </body>
initKhi WordPress bắt đầu khởi động
after_setup_themeKhi theme đã sẵn sàng
admin_menuKhi tạo menu trong admin
save_postKhi 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_titleSửa tiêu đề bài viết
the_contentSửa nội dung bài viết
excerpt_lengthĐổi số từ đoạn trích
excerpt_moreSửa chuỗi “…” ở đoạn trích
wp_nav_menu_itemsThêm item vào menu
body_classThê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
ActionKhi bạn muốn thêm hành động
FilterKhi 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

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Đăng ký nhận tin mới

Nhận bài học, tài nguyên và cơ hội việc làm qua email hàng tuần.

Chúng tôi cam kết không spam. Bạn có thể hủy bất cứ lúc nào.