Hướng dẫn action hook wordpress - action hook wordpress
Trong mã nguồn WordPress, ngoài việc nắm vững WP Query để hiểu cách nó lấy nội dung như mình đã trình bày ở phần trước thì một trong các tính năng cực kỳ quan trọng khác để bạn “giao tiếp” với mã nguồn của nó đó chính là Action Hook, trong bài này mình sẽ nói chi tiết về action hook nhiều nhất có thể. Show Action Hook là gì?Như trong bài 2 mình đã có nói qua về quy trình WordPress xử lý mỗi khi có một lượt truy cập vào. Và Action Hook chính là một điểm neo để chúng ta thực hiện một hành động gì đó tại một chu kỳ nhất định.để chúng ta thực hiện một hành động gì đó tại một chu kỳ nhất định. Ví dụ bạn muốn đoạn script của chúng ta sẽ thực thi sau khi mã nguồn đã được tải để tránh việc bị lỗi do sử dụng một số thành phần trong mã nguồn thì chúng ta sẽ móc đoạn script đó vào hook Cách sử dụng một Action HookĐể sử dụng Action Hook, chúng ta sẽ phải tạo ra một hàm chứa đoạn script PHP cần chạy (gọi là callback function), sau đó sử dụng hàm add_action() trong WordPress để móc cái callback của mình vào cái action hook cần cho nó móc vào. Ví dụ dưới đây là mình sẽ chạy một hàm móc vào hook
Và đây không phải là template tag, nên bạn sẽ chèn nó ở functions.php trong theme hoặc trong plugin của bạn.chèn nó ở functions.php trong theme hoặc trong plugin của bạn. Cấu trúc sử dụng của hàm add_action( $hook, $function_to_add, $priority, $accepted_args ); Trong đó:
Action Hook được tạo ra thế nào?Action Hook được tạo ra bằng hàm add_action( $hook, $function_to_add, $priority, $accepted_args );2, hàm này chỉ đơn giản là khai báo một điểm neo ngay tại vị trí của nơi nó cần thực thi. Do tính chất của nó chỉ là khai báo điểm neo nên nó có thể sử dụng như tạo điểm neo hành động trong một chu kỳ nào đó, hoặc bạn có thể chèn thêm một cái gì đó vào ngay tại vị trí của điểm neo. Ví dụ bạn có thể khai báo một action hook tên thachpham_before_content trong template ở vị trí bất kỳ với đoạn code sau (đặt vào template của theme): Và bây giờ, nếu bạn muốn chèn một cái gì đó hoặc thực thi cái gì đó ngay tại vị trí mà bạn đã chèn hook thachpham_before_content thì chỉ cần móc nó vào một hàm callback nào đó là được. Một số ví dụ Action Hook trong WordPressBạn đã biết Action Hook là gì rồi và cách sử dụng cơ bản của nó, bây giờ chúng ta cùng thực hành một số action hook thông dụng trong WordPress nhé. Bạn có thể tham khảo danh sách action hook trong WordPress để biết thêm. pre_get_postsĐây là hook mà bạn sẽ sử dụng nếu như bạn cần thay đổi lại tham số của truy vấn ở một trang nào đó bằng hàm callback của mình. Hook này được gọi ra sau khi truy vấn mặc định của WordPress được tạo ra nhưng trước khi truy vấn được chạy. Hook này thường được sử dụng kèm với đối tượng add_action( $hook, $function_to_add, $priority, $accepted_args );3 để sửa lại tham số của truy vấn hay làm việc gì đó để thao tác với truy vấn mặc định. Ví dụ mình muốn ở trang lưu trữ của WordPress sẽ có truy vấn lấy bài viết ngẫu nhiên thì mình sẽ kết hợp với các hàm điều kiện của WordPress và phương thức add_action( $hook, $function_to_add, $priority, $accepted_args );4 trong hook này.
Như vậy chúng ta đã làm thành công việc tuỳ biến query ở mỗi trang mà không cần chạm vào mã nguồn, hay phải không nào? wp_headHook này sẽ được sử dụng nếu như bạn muốn chèn một cái gì đó vào cặp thẻ của theme mà không cần sửa template của theme.
Nếu bạn cần chèn vào footer thì có hook là add_action( $hook, $function_to_add, $priority, $accepted_args );6. Lời kếtTrong bài viết này, có lẽ bạn đã nắm được khá nhiều các kiến thức về add_action trong WordPress rồi đó và mặc định nó cũng chỉ có như vậy thôi, nhưng về sau nếu bạn viết plugin thì tính năng này cực kỳ hữu ích. Hoặc khi bạn sử dụng các theme framework nó cũng sử dụng action hook rất nhiều. Ở bài sau, chúng ta sẽ tìm hiểu thêm một loại hook nữa gọi là Filter Hook. Thạch PhạmBé Thạch 18 tuổi, hiện công tác tại AZDIGI với vị trí giữ xe và viết thuê tại ThachPham.Com. Sở thích nghiên cứu về website, DevOps, SysAdmin và xăm mình nữa. Phương châm sống của bé là "No Pain, No Gain". Hiện tại blog tạm đóng bình luận vì mình cần tập trung thời gian vào cập nhật bài viết. Bình luận sẽ mở ra cho đến khi mình sẵn sàng. |