Hook là gì trong wordpress

-

Trong mã mối cung cấp WordPress, xung quanh việc nắm rõ WP Query để hiểu phương pháp nó lấy văn bản như mình đã trình bày tại đoạn trước thì một trong số tính năng cực kì quan trọng khác để các bạn “giao tiếp” cùng với mã nguồn của nó đó chính là Action Hook, trong bài bác này mình sẽ nói cụ thể về action hook các nhất có thể.

Bạn đang xem: Hook là gì trong wordpress

Action Hook là gì?

Như trong bài bác 2 mình đã có nói qua về quá trình WordPress xử lý mọi khi có một lượt truy vấn vào. Và action Hook đó là một điểm neo để bọn họ thực hiện tại một hành động nào đấy tại một chu kỳ nhất định.

Ví dụ bạn muốn đoạn script của bọn họ sẽ thực thi sau khoản thời gian mã nguồn đang được cài để tránh việc bị lỗi bởi sử dụng một số trong những thành phần trong mã nguồn thì bọn họ sẽ móc đoạn script đó vào hook init vào WordPress.

Cách thực hiện một kích hoạt Hook

Để sử dụng kích hoạt Hook, chúng ta sẽ phải tạo thành một hàm chứa đoạn script PHP cần chạy (gọi là callback function), kế tiếp sử dụng hàm add_action() vào WordPress để móc loại callback của chính bản thân mình vào cái action hook đề xuất cho nó móc vào. Lấy ví dụ như dưới đó là mình đã chạy một hàm móc vào hook init.



function gioitre10x.com_theme_setup() // PHP Script hereadd_action( ‘init’, ‘gioitre10x.com_theme_setup’ )Và đây chưa hẳn là template tag, nên bạn sẽ chèn nó sống functions.php vào theme hoặc trong plugin của bạn.

Cấu trúc thực hiện của hàm add_action() là:

add_action( $hook, $function_to_add, $priority, $accepted_args );Trong đó:

$hook (string) (bắt buộc) – tên hook phải móc vào.$function_to_add (callback) (bắt buộc) – thương hiệu hàm phải sử dụng.$priority (integer) (tuỳ chọn) – mức độ ưu tiên của hàm này xúc tiến với những hàm khác ví như nó bao gồm chung một hook. Mang định là 10, số càng bé dại thì nó càng triển khai sớm hơn.$accepted_args (integer) (tuỳ chọn) – số lượng tham số được áp dụng trong hàm callback. Mặc định là 1.

Action Hook được tạo nên thế nào?

Action Hook được tạo thành bằng hàm do_action(), hàm này chỉ đơn giản là khai báo một điểm neo ngay lập tức tại vị trí của nơi nó đề xuất thực thi. Do đặc thù của nó chỉ nên khai báo điểm neo phải nó rất có thể sử dụng như chế tạo điểm neo hành động trong một chu kỳ nào đó, hoặc bạn cũng có thể chèn thêm một cái gì đó vào tức thì tại vị trí của điểm neo.



Ví dụ bạn có thể khai báo một kích hoạt hook tên gioitre10x.com_before_content vào template làm việc 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 có nhu cầu chèn một cái nào đó hoặc tiến hành cái nào đấy ngay tại vị trí mà chúng ta đã chèn hook gioitre10x.com_before_content thì chỉ việc móc nó vào một trong những hàm callback nào đó là được.

Một số ví dụ action Hook trong WordPress

Bạn đã biết action Hook là gì rồi cùng cách sử dụng cơ bản của nó, bây chừ chúng ta cùng thực hành một số trong những action hook thường dùng trong WordPress nhé. Chúng ta cũng có thể tham khảo danh sách action hook trong WordPress để tìm hiểu thêm.

Xem thêm: Nam Kỷ Tỵ 1989 Mệnh Gì? Tài Vận Năm 2020 Của Tuổi Này Ra Sao?

pre_get_posts

Đây là hook mà các bạn sẽ sử dụng nếu bạn cần biến hóa lại tham số của tầm nã vấn tại một trang làm sao đó bởi hàm callback của mình. Hook này được call ra sau khi truy vấn mang định của WordPress được tạo ra nhưng trước lúc truy vấn được chạy. Hook này thường được sử dụng kèm với đối tượng $query nhằm sửa lại tham số của tầm nã vấn hay có tác dụng việc gì đấy để thao tác với truy nã vấn mặc định.



Ví dụ bạn muốn ở trang lưu trữ của WordPress sẽ sở hữu được truy vấn lấy bài viết ngẫu nhiên thì mình sẽ kết phù hợp với các hàm điều kiện của WordPress và thủ tục $query->set() vào hook này.

Các hàm điều kiện khi dùng trong hook này sẽ buộc phải viết bên dưới dạng cách làm của $query. Ví dụ: $query->is_home().

function gioitre10x.com_modify_archive_query( $query ) // khai báo thay đổi cần áp dụng trong callback if( $query->is_archive() && $query->is_main_query() ) : // is_main_query được sử dụng để né nó can thiệp vào truy vấn chưa hẳn mặc định $query->set(‘orderby’, ‘rand’); // orderby=rand => thu xếp bài tình cờ $query->set(‘posts_per_page’, ‘1’); // posts_per_page=1 => hiển thị 1 bài bác mỗi trang endif; add_action( ‘pre_get_posts’, ‘gioitre10x.com_modify_archive_query’ );

Như vậy bọn họ đã làm thành công việc tuỳ biến query ngơi nghỉ mỗi trang nhưng mà không bắt buộc chạm vào mã nguồn, hay bắt buộc không nào?

wp_head

Hook này sẽ tiến hành sử dụng ví như như bạn muốn chèn một cái nào đấy vào cặp thẻ của theme mà không buộc phải sửa template của theme.



function gioitre10x.com_author_tag() echo " ";add_action( ‘wp_head’, ‘gioitre10x.com_author_tag’ );Nếu bạn cần chèn vào footer thì có hook là wp_footer.

Lời kết

Trong nội dung bài viết này, chắc hẳn rằng bạn đã nuốm được không ít các kỹ năng và kiến thức về add_action vào WordPress rồi đó với mặc định nó cũng chỉ gồm như vậy thôi, nhưng mà về sau nếu như khách hàng viết plugin thì công dụng này cực kì hữu ích. Hoặc khi bạn sử dụng những theme framework nó cũng sử dụng kích hoạt hook vô cùng nhiều.

Ở bài bác sau, họ sẽ tham khảo thêm một nhiều loại hook nữa gọi là Filter Hook.


Xem tiếp bài trong seriePhần trước: áp dụng WP Query cùng Loop (vòng lặp) để lấy bài viếtPhần kế tiếp: biện pháp dùng Filter Hook trong WordPress
*

Thạch Phạm

Bé Thạch 18 tuổi, hiện công tác tại AZDIGI với địa chỉ giữ xe cùng viết thuê trên gioitre10x.com. Sở thích nghiên cứu và phân tích về website, DevOps, SysAdmin cùng xăm mình nữa.Phương châm sống của nhỏ xíu là "No Pain, No Gain".