Hook là một thiết kế tuyệt vời để lập trình viên có thể tương tác, chỉnh sửa logic của một đoạn mã có trước. Trong WordPress, Hook là nền tảng cơ bản để theme, các plugins tương tác với WordPress Core. Có thể xem hook là một khái niệm cần phải biết của tất cả lập trình viên WordPresss.

WordPress định nghĩa 2 loại hooks: ActionsFilters. Để sử dụng hook, lập trình viên cần viết các hàm (function) của họ – các hàm này được gọi là callback function. Sau đó, khai báo với WordPress để gắn hàm callback vào các hook cụ thể.

Action Hook

Bạn có thể hình dung,  action hook như một điểm neo, nó cho phép lập trình viên can thiệp vào 1 điểm cụ thể trong quá trình xử lý và render trang web WordPress. Khá trừu tượng đúng không? Để dễ dàng hơn, chúng ta thử hình dung quá trình người dùng tương tác với máy chủ web.

(1) Người dùng gửi request đến máy chủ -> (2) Máy chủ nhận request -> (3) Load các dữ liệu liên quan -> (4) Thực hiện các tính toán, truy vấn các dữ liệu cần thiết -> (5) Render HTML -> (6) Phản hồi dữ liệu về người dùng.

Trong bước số (5) khi render HTML, chắc chắn cũng phải làm tuần tự, như các bạn đã biết cấu trúc của 1 tài liệu HTML.

(5.1) Render thẻ head ->(5.2) Render thẻ body. Trong từng thẻ, lại Render theo tuần tự. Do đó, khi phát triển WordPress Core hoặc Theme, lập trình viên sẽ cài đặt sẵn một số điểm neo ở các vị trí định trước như (3), (4), (5.1), (5.2)….vv Dựa vào các điểm neo trước, chúng ta sẽ can thiệp vào logic của mã nguồn một cách dễ dàng.

Ví dụ: Chúng ta cần thêm 1 đoạn mã theo dõi của google vào thẻ head. Thay vì chúng ta phải mở template ‘header.php’ ra, thêm nó vào, các bạn có thể tận dụng hook wp_head. Để thực hiện, các bạn mở file functions.php thêm đoạn mã sau

 

Filter Hook

Bạn có thể hình dung,  filter hook không giống như một điểm neo, mà giống như một loạt ống bê tông, sếp liên tiếp với nhau, tạo ra một đường hầm mà dữ liệu muốn hiển thị ra cho người dùng cần đi qua hết đường hầm này.