Tạo custom Action Hook trong WordPress là một kỹ năng rất hữu ích để tùy chỉnh và mở rộng chức năng của website mà không cần chỉnh sửa trực tiếp vào core hoặc theme/plugin.
Action Hook là gì?
Trong WordPress, action hook là những “điểm neo” được định nghĩa sẵn trong mã nguồn. Tại những điểm này, bạn có thể “móc” (hook) các hàm tùy chỉnh của mình vào để thực thi một hành động nào đó khi WordPress chạy qua điểm neo đó.
1. Các bước tạo custom action hook:
Chọn một vị trí thích hợp: Xác định vị trí trong mã nguồn theme hoặc plugin của bạn nơi bạn muốn “gắn” action hook. Vị trí này thường là nơi bạn muốn thực hiện một hành động tùy chỉnh. Ví dụ:
Trước khi hiển thị nội dung một bài viết.
Sau khi lưu một bài viết.
Trong quá trình xử lý form.
Bất kỳ vị trí nào bạn thấy phù hợp với nhu cầu của mình.
2. Khai báo action hook bằng do_action()
:
Tại vị trí bạn đã chọn, hãy thêm đoạn mã PHP sau để khai báo action hook:
do_action( 'ten_action_hook_cua_ban' );
Thay thế 'ten_action_hook_cua_ban'
bằng một tên duy nhất và dễ hiểu, thường sử dụng tiền tố của theme hoặc plugin của bạn để tránh xung đột tên với các action hook khác.
Ví dụ: tccntt_after_content
, tccntt_before_save
.
Bạn cũng có thể truyền dữ liệu vào action hook bằng cách thêm các tham số sau tên hook:
do_action( 'ten_action_hook_cua_ban', $arg1, $arg2, ... );
Tạo hàm xử lý action: Bây giờ, bạn cần tạo một hàm PHP để thực hiện hành động bạn muốn khi action hook được gọi. Ví dụ:
function my_custom_action_function() {
// Mã PHP bạn muốn thực thi tại hook này
echo '<p>Đây là hành động tùy chỉnh của tôi!</p>';
}
Nếu bạn đã truyền dữ liệu vào do_action()
, hàm của bạn cũng cần khai báo các tham số tương ứng để nhận dữ liệu đó:
function my_custom_action_function( $arg1, $arg2 ) {
// Sử dụng $arg1 và $arg2 trong hàm của bạn
echo '<p>Giá trị tham số 1: ' . esc_html( $arg1 ) . '</p>';
echo '<p>Giá trị tham số 2: ' . esc_html( $arg2 ) . '</p>';
}
“Móc” hàm vào action hook bằng add_action()
Cuối cùng, bạn cần sử dụng hàm add_action()
để liên kết hàm xử lý của bạn với action hook đã tạo. Thông thường, bạn sẽ đặt đoạn mã này trong file functions.php
của theme hoặc trong file chính của plugin.
add_action( 'ten_action_hook_cua_ban', 'my_custom_action_function' );
- Tham số đầu tiên là tên của action hook bạn đã khai báo.
- Tham số thứ hai là tên của hàm xử lý bạn đã tạo.
- Bạn cũng có thể chỉ định độ ưu tiên (tham số thứ ba, số càng nhỏ thì độ ưu tiên càng cao, mặc định là 10) và số lượng tham số mà hàm của bạn chấp nhận (tham số thứ tư, mặc định là 1)
add_action( 'ten_action_hook_cua_ban', 'my_custom_action_function', 20, 2 );
Giả sử bạn muốn thêm một đoạn text tùy chỉnh sau tiêu đề của mỗi bài viết.
Chọn vị trí và khai báo action hook: Trong file single.php
của theme bạn (hoặc một template part hiển thị tiêu đề), bạn có thể thêm:
<h1><?php the_title(); ?></h1>
<?php do_action( 'tccntt_after_post_title' ); ?>
Tạo hàm xử lý: Trong file functions.php
của theme
function tccntt_add_custom_text_after_title() {
echo '<div class="custom-text">Đây là đoạn text tùy chỉnh sau tiêu đề.</div>';
}
“Móc” hàm vào action hook: Cũng trong file functions.php
add_action( 'tccntt_after_post_title', 'tccntt_add_custom_text_after_title' );
Bây giờ, khi bạn xem một bài viết đơn lẻ, đoạn text “Đây là đoạn text tùy chỉnh sau tiêu đề.” sẽ hiển thị ngay bên dưới tiêu đề.
Lưu ý quan trọng:
- Tính duy nhất của tên hook: Hãy đảm bảo tên action hook của bạn là duy nhất để tránh xung đột không mong muốn với các theme hoặc plugin khác. Sử dụng tiền tố riêng là một cách tốt để đảm bảo điều này.
- Vị trí khai báo
do_action()
: Việc chọn đúng vị trí để khai báo action hook là rất quan trọng để hành động của bạn được thực thi đúng thời điểm. - Nơi đặt
add_action()
: Thông thường, các hàmadd_action()
được đặt trong filefunctions.php
của theme hoặc trong file chính của plugin. Điều này đảm bảo chúng được tải khi WordPress khởi động.
Hy vọng hướng dẫn này giúp bạn hiểu rõ cách tạo custom action hook trong WordPress.