Trong mã nguồn WordPress, việc hiểu rõ WP Query là quan trọng để có thể lấy nội dung một cách hiệu quả. Tuy nhiên, ngoài việc nắm vững WP Query, có một tính năng quan trọng khác trong mã nguồn WordPress mà bạn nên biết đó là Action Hook. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về action hook và cách sử dụng nó.
Contents
Action Hook là gì?
Như đã đề cập trong bài viết trước, WordPress có một quy trình xử lý mỗi khi có một lượt truy cập vào. Action Hook là một điểm neo để bạn thực hiện một hành động cụ thể tại một chu kỳ nhất định.
Bạn đang xem: Cách sử dụng Action Hook trong WordPress
Ví dụ, nếu bạn muốn đoạn mã của bạn được thực thi sau khi mã nguồn đã được tải để tránh lỗi khi sử dụng một số thành phần trong mã, bạn có thể móc đoạn mã đó vào hook init trong WordPress.
Cách sử dụng một Action Hook
Để sử dụng Action Hook, bạn cần tạo một hàm chứa đoạn mã PHP cần chạy (gọi là callback function), sau đó sử dụng hàm add_action() trong WordPress để móc callback của bạn vào action hook tương ứng. Dưới đây là một ví dụ về cách chạy một hàm được móc vào hook init.
function thachpham_theme_setup(){
// Đoạn mã PHP ở đây
}
add_action( 'init', 'thachpham_theme_setup' )
Lưu ý rằng này không phải là template tag, vì vậy bạn phải chèn nó vào file functions.php trong theme hoặc trong plugin của bạn.
Xem thêm : Wix vs. WordPress: Lựa chọn nền tảng nào cho website của bạn?
Cấu trúc sử dụng của hàm add_action() như sau:
add_action( $hook, $function_to_add, $priority, $accepted_args );
Trong đó:
$hook
(chuỗi) (bắt buộc) – Tên hook cần móc vào.$function_to_add
(callback) (bắt buộc) – Tên hàm cần sử dụng.$priority
(số nguyên) (tuỳ chọn) – Mức độ ưu tiên của hàm này so với các hàm khác cùng móc vào hook. Mặc định là 10, số càng nhỏ thì hàm được thực thi sớm hơn.$accepted_args
(số nguyên) (tuỳ chọn) – Số lượng tham số được sử dụng trong hàm callback. Mặc định là 1.
Action Hook được tạo ra thế nào?
Action Hook được tạo ra bằng hàm do_action(), chức năng của nó là khai báo một điểm neo tại vị trí cần thực thi. Bạn có thể sử dụng do_action() để tạo một điểm neo hành động trong một chu kỳ nào đó, hoặc để chèn thêm một nội dung bất kỳ vào điểm neo đó.
Ví dụ, bạn có thể khai báo một action hook tên thachpham_before_content trong template ở bất kỳ vị trí nào bằng đoạn mã sau (đặt vào template của theme):
<?php do_action( 'thachpham_before_content' ); ?>
Nếu bạn muốn chèn hoặc thực hiện một hành động nào đó tại vị trí đã chèn hook thachpham_before_content, chỉ cần móc nó vào một hàm callback.
Một số ví dụ Action Hook trong WordPress
Bạn đã nắm được khá nhiều về Action Hook 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.
pre_get_posts
Xem thêm : WordPress and PHP 7.4
Hook này được sử dụng khi bạn muốn thay đổi tham số truy vấn trang một cách tùy chỉnh thông qua hàm callback của mình. Hook này được gọi sau khi truy vấn mặc định của WordPress được tạo ra, nhưng trước khi truy vấn được thực hiện. Hook này thường được sử dụng để sửa đổi các tham số truy vấn mặc định hoặc thao tác khác liên quan đến truy vấn.
Ví dụ, nếu bạn muốn trang lưu trữ hiển thị bài viết ngẫu nhiên, bạn có thể kết hợp các hàm điều kiện của WordPress và phương thức $query->set() trong hook này.
function thachpham_modify_archive_query( $query ) {
if( $query->is_archive() && $query->is_main_query() ) :
$query->set('orderby', 'rand'); // sắp xếp bài ngẫu nhiên
$query->set('posts_per_page', '1'); // hiển thị 1 bài mỗi trang
endif;
}
add_action( 'pre_get_posts', 'thachpham_modify_archive_query' );
Với ví dụ trên, bạn đã có thể tuỳ chỉnh truy vấn trên mỗi trang mà không cần chỉnh sửa mã nguồn gốc.
wp_head
Hook này được sử dụng khi bạn muốn chèn một nội dung vào thẻ <head> của theme mà không cần sửa template gốc của theme.
function thachpham_author_tag(){
echo "<link rel="author" href="https://thachpham.com" />n";
}
add_action( 'wp_head', 'thachpham_author_tag' );
Nếu bạn muốn chèn vào footer, bạn có thể sử dụng hook wp_footer.
Lời kết
Qua bài viết này, bạn đã được tìm hiểu về cách sử dụng add_action trong WordPress. Mặc dù nó chỉ có vẻ đơn giản như vậy, nhưng tính năng này rất hữu ích khi bạn viết plugin hoặc sử dụng các theme framework. Trong bài viết tiếp theo, chúng ta sẽ tìm hiểu thêm về loại hook khác gọi là Filter Hook.
Nguồn: https://laptrinhc.edu.vn
Danh mục: Web