Hướng dẫn làm việc với Hook trong WordPress

Hướng dẫn làm việc với Hook trong WordPress

Với mỗi một ngôn ngữ lập trình, CMS, Framework sẽ có những cách khác nhau để can thiệp vào những class, function của hệ thống (core). Có nhiều Framework, CMS sử dụng sự kiện (event), ghi đè (overide) các class có sẵn,…Còn với WordPress sẽ thông qua Hook.

Trong bài này Hoàng An sẽ hướng dẫn bạn tìm hiểu về Hook và cách làm việc với Hook trong WordPress.

Hook là gì?

Hook hiểu đơn giản nhất là danh sách các tham số được xây dựng sẵn trong hệ thống core của WordPress. Ngoài ra, WordPress còn cho phép các nhà phát triển tự xây dựng Hook riêng để người khác phát triển được trên những hook đó. (Ví dụ Hook trong các theme, plugin)

Trong hook có 2 loại:

  • Hook Filter: Các bộ lọc xử lý liên quan đến nội dung
  • Hook Action: Các xử lý liên quan đến hành động

Hook Filter

Danh sách Hook Filter trong WordPress: https://codex.wordpress.org/Plugin_API/Filter_Reference

Trước khi sử dụng bạn nên xem hướng dẫn sử dụng các Hook đó để biết được các tham số truyền vào.

Ví dụ:


add_filter( 'the_content', 'filter_the_content_in_the_main_loop', 1 );

function filter_the_content_in_the_main_loop( $content ) {

// Check if we're inside the main loop in a single Post.
if ( is_singular() && is_main_query() ) {
return $content . esc_html__( 'I’m filtering the content inside the main loop', 'wporg');
}

return $content;
}

Các thao tác với Hook Filter

Thêm hook


add_filter ( $tag, $callback, $priority = 10, $accepted_args = 1 )

Trong đó:

  • $tag: Tên hook filter. Nếu nhập tên không có sẵn trong hệ thống WordPress hoặc không có trong các theme, plugin thì sẽ tạo ra hook mới
  • $callback: Tên hàm sẽ thực thi hook filter. Cần thêm bước định nghĩa hàm nữa
  • $priority: Thứ tự ưu tiên thực hiện hàm callback (Mặc định là 10). Thứ tự càng thấp sẽ ưu tiên thực hiện trước
  • $accepted_args: Tổng số tham số trong hàm callback

Ví dụ:


add_filter ( 'the_title', 'add_custom_title', 10, 1 );

function add_custom_title($title){
return $title.' - custom title';
}

Sử dụng hook

Để sử dụng hook filter, bạn chỉ cần gọi qua hàm apply_filters(). Lúc này dữ liệu sẽ được lọc qua hook filter rồi trả về kết quả.


$title = apply_filters('the_title', $title);

Xoá hook

Để làm được việc này, bạn cần phải xác định được tên hàm callback đã add_filter()


remove_filter($tag, $callback_remove, $priority = 10);

Trong đó:

  • $tag: Tên hook filter cần xoá
  • $callback_remove: Tên hàm cần xoá
  • $priority: Thứ tự ưu tiên (Đã được thêm từ hàm add_filter())

Hook Action

Danh sách Hook Action trong WordPress: https://codex.wordpress.org/Plugin_API/Action_Reference

Trước khi thực hiện thao tác với Hook Action, bạn cần phải tìm hiểu các tham số truyền vào của Hook đó.

Ví dụ:


function add_custom_script_footer() {
?>
<script type="text/javascript">
//Code here
</script>
<?php
}
add_action( 'wp_footer', 'your_function', 20);

Ở ví dụ trên, tôi đã thực hiện việc add thẻ script xuống footer của website

Các thao tác với Hook Action

Thêm hook


add_action ($tag, $callback, $priority = 10, $accepted_args = 1 )

Trong đó:

  • $tag: Tên hook action. Nếu nhập tên không có sẵn trong hệ thống WordPress hoặc không có trong các theme, plugin thì sẽ tạo ra hook mới
  • $callback: Tên hàm sẽ thực thi hook action. Cần thêm bước định nghĩa hàm nữa
  • $priority: Thứ tự ưu tiên thực hiện hàm callback (Mặc định là 10). Thứ tự càng thấp sẽ ưu tiên thực hiện trước
  • $accepted_args: Tổng số tham số trong hàm callback

Sử dụng hook

Để sử dụng Hook Action, bạn chỉ cần gọi qua hàm do_action()

Ví dụ:


do_action('wp_footer');

Xoá hook

Để làm được điều này, bạn cần phải xác định tên hàm được gọi trong hàm add_action()


remove_action($tag, $callback_remove, $priority = 10);

Trong đó:

  • $tag: Tên hook action cần xoá
  • $callback_remove: Tên hàm cần xoá
  • $priority: Thứ tự ưu tiên (Đã được thêm từ hàm add_action())

Lưu ý: Nếu muốn sửa hook bạn cần phải xoá đi rồi thêm function mới. Nếu không thực hiện xoá trước giá trị function sẽ được thêm tiếp vào hook hiện có (Thêm trước hay sau phụ thuộc vào độ ưu tiên của hàm add_action, add_filter)

Kết luận

Trên đây, tôi có chia sẻ kinh nghiệm về việc thao tác với Hook trong WordPress. Cái khó của làm việc với Hooks chính là xác định được tên hook và loại hook cần thao tác. Đây là kiến thức rất quan trọng để có thể làm việc với các plugin như WooCommerce, LearnPress,…

[Total: 6   Average: 3/5]

Hoàng An

Tôi không phải là 1 chuyên gia lập trình, cũng không phải là 1 chuyên gia SEO. Với niềm đam mê với CNTT, tôi có thể biến ý tưởng thành sản phẩm và thích chia sẻ kiến thức cho người khác. Nếu có duyên, mời bạn đến với khoá học của tôi

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 *