Hướng dẫn cách tạo Action Hook và Filter Hook cho WordPress

Hướng dẫn cách tạo Action Hook và Filter Hook cho WordPress

Hướng dẫn chi tiết cách tự tạo Action Hook và Filter Hook cho riêng mình để tự làm Framework Theme cho WordPress chuyên nghiệp.

Vừa qua mình có đăng serie Lập trình theme WordPress và trong đó mình có nói là sẽ hướng dẫn thêm cách tự tạo Action HookFilter Hook để bạn có thể làm ra được một Framework Theme linh hoạt hơn, tuy nhiên sau khi suy nghĩ mình thấy nên tách ra riêng khỏi serie vì nó cũng khá đơn giản nên có thể hiểu được ngay mà không cần làm cả một serie kia.

Như bạn biết thì trong WordPress, tính năng Action và Filter được sử dụng rất nhiều, cũng nên nhắc lại rằng:

  • Action Hook: Dùng để chỉ một hành động sẽ được thực thi, hoặc một vị trí nào đó trong một template của theme.
  • Filter Hook: Đây là một hàm chứa nội dung thông thường nhưng cho phép người dùng thay đổi nội dung bên trong thông qua việc sử dụng filter.

Trong bài hướng dẫn Action & Filter mình đã có giải thích rất chi tiết, kèm theo nhiều ví dụ cụ thể nên bạn có thể xem qua nếu chưa hiểu về nó.

Cách tự tạo Action Hook

Để tạo action hook thì rất đơn giản, đó là đặt hàm do_action( 'tên_hook_cần_tạo' ) vào vị trí mà bạn muốn chỉ định hook này được sử dụng vào bên trong template của theme. Ví dụ mình muốn tạo một cái hook nằm ở header thì sẽ chèn đoạn sau vào file header.php (dòng in đậm):

Sau đó chúng ta có thể thử viết một function để chèn một nội dung gì đó vào cái hook này:

Đơn giản phải không nào?

Cách tự tạo Filter Hook

Tuy có hơi phức tạp hơn so với Action Hook nhưng dẫu sao việc tự tạo một Filter Hook vẫn đơn giản. Để có thể filter được, dĩ nhiên chúng ta sẽ làm sao để cho nội dung bên trong đó có quyền được thay đổi. Để làm cho một giá trị có quyền truy cập và thay đổi bởi tính năng Filter trong WordPress thì chúng ta sẽ cần dùng hàm apply_filters() để gọi giá trị đó ra bên trong code mà bạn muốn nó có thể filter.

Ví dụ như ở dưới đây, mình có hàm theme_title() để in ra tên website, nhưng người dùng có thể filter cái tên website thành giá trị mà họ muốn thông qua filter.

Trong hàm apply_filters() sẽ có hai tham số bắt buộc đó là:

  • $tag: tên của filter mà bạn muốn đặt cho giá trị này.
  • $value: giá trị mà bạn muốn người dùng có thể thay đổi thông qua filter.

Như vậy, đoạn apply_filters( 'web_title', $title ) có nghĩa là chúng ta sẽ tạo một filter với tên hook làweb_title và nó có thể filter qua biến $title.

Bây giờ, bạn có thể viết hàm theme_title_() vào khu vực mà bạn muốn hiển thị:

Và viết function nếu muốn thay nội dung của biến $title như sau:

Hoặc

Bạn có thể viết sao tùy thích, chỉ là nhớ áp dụng hàm apply_filters() vào giá trị mà bạn muốn người dùng có thể filter qua.

Hoặc nếu bạn không thích tạo một hàm riêng cho nó, bạn có thể viết trực tiếp lên template của theme. Ví dụ:

Và filter nó:

Lời kết

Thực ra việc tự tạo Action Hook và Filter Hook có thể sẽ ít có cơ hội áp dụng nhưng nếu bạn thường xuyên làm theme thì nên biết cách làm để có thể sử dụng linh hoạt Action và Filter bên trong theme, điều này sẽ giúp người sử dụng khác hoặc thậm chí bản thân bạn cảm thấy dễ dàng hơn khi muốn tùy biến lại theme mình đã làm. Đó là các lý do tại sao mà những Framework Theme thường đều có rất nhiều Action và Filter Hook để người dùng có thể tùy biến linh hoạt nhưng hạn chế việc động chạm vào phần code chính (core) của theme.

WordPress FAQ  » Học WordPress > Lập trình WordPress > WordPress API


 WordPress FAQ   |   Hoc WordPress   |   Su dung WordPress   |   Lap trinh WordPress |   Plugin WordPress  |  Thuat ngu WordPress    |  Theme WordPress  |  Lap trinh Themes |  Lap trinh plugin

Ảnh. Hướng dẫn cách tạo Action Hook và Filter Hook cho WordPress
Ảnh. Hướng dẫn cách tạo Action Hook và Filter Hook cho WordPress

Chia sẻ bài viết

Bình luận