Bài 06: Hook Filter trong WordPress

Hook Filter – Plugin chỉ có một cách duy nhất là tương tác với Hook để thay đổi cách quá trình xử lý của WordPress. Hungshare.com sẽ hướng dẫn các bạn chi tiết trong bài học này.

Hook Filter trong WordPress

I. Giới thiệu về Hook Filter

1. Hook là gì?

Trong WordPress, Hook là cơ chế cho phép lập trình viên “kết nối” tới một số sự kiện hoặc hành động (trong các tệp PHP của WordPress) và thực hiện các thao tác tùy ý khi các sự kiện hoặc hành động đó được kích hoạt. Plugin chỉ có một cách duy nhất là tương tác với Hook để thay đổi cách quá trình xử lý của WP. Hook cũng được sử dụng trong Core của WP

Các hook được chia thành 2 loại: Action hook và Filter hook.

  • Action hook: là các điểm trong quá trình thực thi của WordPress mà các plugin hoặc theme có thể “kết nối” vào để thực hiện các hành động của mình. Ví dụ: hook vào sự kiện khi một bài viết được đăng, hook vào sự kiện khi đăng nhập vào trang quản trị…
  • Filter hook: là các điểm trong quá trình thực thi của WordPress mà các plugin hoặc theme có thể “kết nối” vào để thay đổi hoặc tùy chỉnh các giá trị trả về của WordPress. Ví dụ: thay đổi đoạn văn bản trong bài viết, thay đổi hình ảnh đại diện của người dùng…

Sử dụng hook là một trong những cách tiếp cận quan trọng để mở rộng và tùy chỉnh WordPress một cách linh hoạt và dễ dàng.

Xem full: Xem full khoá học lập trình WordPress

2. Filter là gì?

Filter là một loại hook được sử dụng để thay đổi hoặc mở rộng giá trị của biến hoặc đối tượng. Filter cho phép bạn thay đổi các giá trị trả về của hầu hết các hàm và phương thức được sử dụng trong WordPress, chẳng hạn như tiêu đề trang, nội dung bài viết, danh sách các thẻ, các giá trị của biến và nhiều hơn nữa.

[Bài viết được đăng tại hungshare.com]

Filter được đặt tên theo quy tắc “filter_ + tên filter” và được gắn kết với một hàm xử lý. Khi filter được kích hoạt, các giá trị sẽ được truyền qua hàm xử lý để thực hiện các thay đổi mong muốn và trả về giá trị mới để sử dụng trong WordPress.

Một số ví dụ về các filter phổ biến trong WordPress bao gồm the_content, the_title, wp_title, wp_nav_menu_items, the_excerpt, và the_permalink.

II. Thao tác với Filter Action trong WordPress

1. Gắn Filter vào Hook

Để gắn một Filter vào một vị trí (hook) nào đó chúng ta sẽ sử dụng hàm:

add_filter( $tag, $function, $priority, $accepted_args );

Tham số:

  • $ tag –  Là tên của một ‘filter hook’  của WP
  • $function – Tên Filter mà bạn viết để tương tác vào hệ thống
  • $priority – Độ ưu tiên của Filter
  • $accepted_args – Số lượng các tham số sẽ được truyền vào hàm của bạn.

Ví dụ 1:

Thay đổi tiêu đề của các bài viết
add_filter( 'the_title', 'hungshare_myplugin_post_title', 10);
function hungshare_myplugin_post_title() {
return 'New title for Post';
}

[Bài viết được đăng tại hungshare.com]

Ví dụ 2:

Sử dụng Class cho Plugin
add_filter('the_title', array($this, 'theTile'));
public function theTile(){
   return 'Thay doi tieu de POST';
}

2. Tra cứu Filter Hook

Một số filter hook được sử dụng phổ biến trong WordPress:

  1. the_title: sử dụng để thay đổi tiêu đề bài viết trước khi hiển thị trên trang web.
  2. the_content: sử dụng để thay đổi nội dung bài viết trước khi hiển thị trên trang web.
  3. the_excerpt: sử dụng để thay đổi trích dẫn bài viết trước khi hiển thị trên trang web.
  4. the_category: sử dụng để thay đổi danh mục bài viết trước khi hiển thị trên trang web.
  5. wp_nav_menu_items: sử dụng để thay đổi các mục menu trước khi hiển thị trên trang web.
  6. wp_get_attachment_url: sử dụng để thay đổi đường dẫn tới file đính kèm trước khi hiển thị trên trang web.
  7. wp_list_categories: sử dụng để thay đổi danh mục bài viết trước khi hiển thị trên trang web.
  8. the_author: sử dụng để thay đổi tên tác giả bài viết trước khi hiển thị trên trang web.
  9. the_date: sử dụng để thay đổi ngày đăng bài viết trước khi hiển thị trên trang web.
  10. get_search_form: sử dụng để thay đổi hình thức tìm kiếm trước khi hiển thị trên trang web.

Các filter hook này cho phép thay đổi các giá trị trước khi chúng được hiển thị trên trang web và là một phần quan trọng trong việc tùy chỉnh giao diện của WordPress.

[Bài viết được đăng tại hungshare.com]

3. Loại bỏ Filter khỏi Hook

Để loại bỏ một Filter ra khỏi một vị trí (hook) nào đó chúng ta sẽ sử dụng hàm:

remove_filter( $tag, $function, $priority)

Tham số:

  • $ tag –  Là tên của một ‘filter hook’  của WP
  • $function – Tên Filter mà bạn muốn loại bỏ khỏi hệ thống
  • $priority – Độ ưu tiên của Filter

Ví dụ:

Loại bỏ Filter khỏi Hook
Khi không sử dụng Class cho Plugin
remove_filter('the_content', 'convert_smilies');
Khi sử dụng Class cho Plugin
remove_filter('the_content', array($this, 'changeContent4'));

4. Loại bỏ tất cả Filter khỏi Hook

Để loại bỏ tất cả Filter ra khỏi một vị trí (hook) nào đó chúng ta sẽ sử dụng hàm:

remove_all_filters( $tag, $priority)

Tham số:

  • $ tag –  Là tên của một ‘filter hook’  của WordPress
  • $priority – Độ ưu tiên của Filter

Ví dụ:

Loại bỏ tất cả Filter khỏi một Hook nào đó
Không sử dụng độ ưu tiên
remove_all_filters('the_content');
Sử dụng độ ưu tiên
remove_all_filters('the_content',10);

5. Kiểm tra sự tồn tại của Filter

[Bài viết được đăng tại hungshare.com]

Kiểm tra sự tồn tại của Filter trong một Hook nào đó:

has_filter($tag, $function_to_check)

Tham số:

  • $ tag –  Là tên của một ‘filter hook’  của WP
  • $ function_to_check – Tên Filter mà bạn muốn kiểm tra

Ví dụ:

Kiểm tra sự tồn tại của Filter trong một Hook nào đó:
Khi không sử dụng Class cho Plugin
has_filter('the_content','convert_smilies')
Khi sử dụng Class cho Plugin
has_filter('the_content',array($this, 'changeContent4'));

6. Lấy tên Filter tại một thời điểm

Lấy tên của một Filter tại một thời điểm nào đó :

current_filter()

Ví dụ:

add_filter('the_content', array($this, 'changeString'),10);
add_filter('the_title', array($this, 'changeString'),10);
public function changeString($text){
if(current_filter() == 'the_content'){
   //..
}
if(current_filter() == 'the_title'){
   //…
}
return $text;
}

III. Các lưu ý về Hook Filter

Dưới đây là các lưu ý quan trọng về Filter Hook trong WordPress:

  • Filter Hook trong WordPress cho phép bạn thay đổi các giá trị, đầu ra hoặc tính năng của các hàm hoặc phương thức.
  • Filter Hook cũng có thể được sử dụng để thay đổi dữ liệu trong cơ sở dữ liệu trước khi nó được lưu trữ hoặc truy xuất ra.
  • Các Filter Hook phải được đặt ở nơi thích hợp để đảm bảo chúng sẽ được gọi vào thời điểm cần thiết.
  • Khi sử dụng Filter Hook, bạn nên đảm bảo rằng các giá trị được trả về vẫn đúng với kiểu dữ liệu và định dạng của nó để tránh gây ra lỗi trong hệ thống WordPress hoặc các plugin khác.
  • Filter Hook cũng có thể được sử dụng để thêm, xóa hoặc sửa đổi các thuộc tính và phương thức của các đối tượng WordPress, chẳng hạn như bài viết, trang hoặc danh mục.
  • Nên tránh sử dụng quá nhiều Filter Hook trong một plugin để tránh làm chậm tốc độ tải trang và ảnh hưởng đến hiệu suất của hệ thống WordPress.

Bài học khác

Đánh giá bài viết

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *