Bên cạnh Action Hook thì Filter Hook cũng là một hook thường được sử dụng trong WordPress. Filter Hook sẽ hỗ trợ người dùng thay đổi dữ liệu xuất ra một cách dễ dàng theo tham số mong muốn mà không phải đổi code của plugin, theme hay core mã nguồn. Để hiểu rõ hơn về Filter Hook và một số cách dùng apply_filters trong WordPress, hãy cùng Vietnix tham khảo ngay trong bài viết dưới đây.
Filter Hook là gì?
Filter Hook là một điểm neo được được khai báo trong mã nguồn của WordPress, plugin hay theme mà tại đó, bạn có thể dễ dàng thay đổi lại kịch bản PHP mà không phải trực tiếp sửa lại code. Điều này cũng giúp khắc phục tình trạng mất code hoặc mất tính năng mới khi sửa trực tiếp vào core. Trong WordPress, API Filter Hook sẽ giúp người dùng dễ dàng tùy chỉnh các chức năng mà không cần thay đổi code ban đầu của core.
Cách dùng Filter Hook và hàm apply_filters trong WordPress
Khi sử dụng Filter Hook, có 2 hàm quan trọng mà bạn cần chú ý tới là hàm apply_filters()
và add_filter()
. Trong đó, chức năng chính của 2 hàm trong WordPress như sau:
- apply_filters trong WordPress: Là hàm hỗ trợ tạo ra các điểm neo.
- add_filter: Hàm này sẽ giúp thay đổi dữ liệu xuất ra tại vị trí mà bạn đã tạo điểm neo.
Dưới đây, Vietnix sẽ hướng dẫn cụ thể các cách sử dụng hàm apply_filters
trong WordPres để tạo điểm neo trong WordPress và add_filter
để thay đổi dữ liệu xuất ra tại các điểm neo đó.
Thêm đoạn mã sau để sử dụng hàm apply_filters
tại các nơi bạn muốn tạo điểm neo:
<?php
$text = 'Vietnix';
echo apply_filters( 'Vietnix_xin_chao', $text );
?>
Sử dụng add_filter
để thay đổi chữ ở nội dung phía trên mà không nhất định phải sửa đoạn code trên. Bạn thêm đoạn mã này ở file function.php
trong theme:
add_filter('Vietnix_xin_chao', 'csw_change_text');
function csw_change_text( $text ) {
$text = 'Change text';
return $text;
}
Tên “Vietnix_xin_chao” chính là Filter Hook do bạn tạo ra như một điểm neo. Bạn cần ghi nhớ tên này để sử dụng hàm add_filter
trong trường hợp bạn muốn thay đổi nội dung xuất ra code. Đối với hàm csw_change_text
bạn có thể thay đổi theo cách dễ hiểu nhất là được.
Một ví dụ thay đổi tiêu đề theo id bài viết với hàm filter the_title
để giúp bạn dễ hiểu hơn. Bạn chỉ cần thêm đoạn code dưới đây vào file function.php
:
add_filter('the_title', 'csw_change_title', 9, 2);
function csw_change_title($title, $id) {
$arr_id_chage_title = [10,12,15,18];
if( in_array($id, $arr_id_chage_title) ) {
$title = $title . ' - Vietnix';
}
return $title;
}
Trong đó:
- the_title: Là tên Filter Hook và là điểm neo do bạn muốn tạo trong WordPress.
- csw_change_title: Hàm mà người dùng có thể tùy ý chọn một cách dễ hiểu nhất.
- 9: Độ ưu tiên của hàm sử dụng, để biết được thứ tự chạy trước sau của các hàm khi sử dụng nhiều hàm add_filter tại một điểm neo.
- 2: Số lượng tham số truyền vào (trong phần code trên sử dụng 2 tham số là
$title
và$id
. - 10, 12, 15, 18: Là id của những bài viết muốn thêm chữ “Vietnix” vào tiêu đề. Bạn cũng có thể thay đổi tùy vào mục đích sử dụng.
Một số hàm Filter khác cần nắm
2 hàm thường được sử dụng nhiều nhất trong Filter Hook là add_filter
và apply_filters
trong WordPress đã được Vietnix giới thiệu bên trên. Bạn cũng có thể tham khảo thêm một số hàm liên quan đến Filter Hook khác để hỗ trợ trong quá trình phát triển theme hay plugin như sau:
Hàm remove_filter
Hàm remove_filter
được sử dụng để loại bỏ một hàm đang móc vào Filter Hook. Code đầy đủ của hàm này như sau:
remove_filter( $hook_name, $callback, $priority )
Trong đó:
- $hook_name: Tên hook.
- $callback: Tên hàm muốn loại bỏ khỏi hook trên.
- $priority: Thứ tự xóa ưu tiên (bạn có thể thay đổi hoặc mặc định điền số 10).
Hàm remove_all_filters
Nếu bạn muốn xóa bỏ tất cả các hàm đang móc vào 1 Filter Hook bạn có thể dùng hàm remove_all_filters
với code như sau.
remove_all_filters( $hook_name, $priority ).
Trong đó:
- $hook_name: Tên hook.
- $priority: Số thứ tự xóa ưu tiên, giá trị mặc định là False.
Hàm has_filter
Nếu bạn muốn kiểm tra xem hook có tồn tại không, hãy thêm đoạn mã code này:
has_filter( $hook_name, $callback )
Trong đó:
- $hook_name: Tên hook.
- $callback: Tên của hàm mà bạn muốn kiểm tra có đang móc vào hook phía trên hay không. Bạn có thể để trống và mặc định hiển thị giá trị là False.
Lời kết
Trên đây là tất cả những thông tin mà Vietnix muốn chia sẻ để giúp giải đáp các thắc mắc về Filter Hook là gì cũng như hướng dẫn cách dùng apply_filters trong WordPress. Hy vọng qua bài viết, bạn sẽ tích lũy thêm được nhiều kiến thức bổ ích và biết được cách sử dụng các filter hỗ trợ quá trình code nhanh chóng, hiệu quả nhé.