Nhựt (WordPress Developer)

Nhựt
2 năm trước

Actions là gì? Cách sử dụng Actions trong WordPress

Actions trong WordPress là gì?

Actions trong WordPress là một trong hai loại Hooks. Actions cho phép chúng ta chạy một chức năng tại một điểm cụ thể trong quá trình thực thi WordPress Core, plugin và theme.

Actions trong WordPress

Tạo một Actions trong WordPress

Quy trình tạo một action bao gồm 2 bước:

Tạo một callback function

Trước tiên cần tạo một callback function. Function này sẽ chạy khi hook mà nó được gán vào chạy.

Gán callback function vào hook

Sau khi tạo callback function, chúng ta sử dụng hàm add_action() để gán function vào hook. Hàm add_action() yêu cầu tối thiểu 2 tham số:

  • string $hook_name là tên của action hook bạn muốn thực thi callback function.
  • callable $callback là tên của callback function bạn muốn gán vào hook.

Ví dụ bên dưới woocommerce_support() sẽ chạy khi after_setup_theme được thực thi.

function woocommerce_support() {
    add_theme_support( 'woocommerce' );
}
add_action( 'after_setup_theme', 'woocommerce_support' );

Tham số bổ sung của Actions trong WordPress

Cấu trúc của add_action() có dạng như sau:

add_action( string $hook_name, callable $callback, int $priority = 10, int $accepted_args = 1 )

Với:

  • $hook_name: (string) (bắt buộc) tên của action hook.
  • $callback: (callable) (bắt buộc) tên của hàm callback.
  • $priority: (int) (tuỳ chọn) độ ưu tiên, mặc định là 10.
  • $accepted_args: (int) (tuỳ chọn) số lượng tham số mà hàm callback sử dụng, mặc định là 1.

$priority – Mức độ ưu tiên

Bạn có thể gán nhiều hàm callback cho một hook. Trong một số trường hợp bạn cần hàm callback này chạy trước hoặc sau hàm callback khác, do đó bạn cần gán cho add_action() một tham số là $priority để quyết định mức độ ưu tiên.
Ví dụ: Tất cả các hàm sau đây đều được gán cho init hook, nhưng với mức độ ưu tiên khác nhau:

add_action('init', 'callback_1', 11);
add_action('init', 'callback_2');
add_action('init', 'callback_3', 9);
add_action('init', 'callback_4', 11);

Trong ví dụ trên:

  • Đầu tiên là callback_3() sẽ được chạy vì nó có mức ưu tiên là 9.
  • Tiếp theo là callback_2() vì nó không được đặt mức độ ưu tiên nào, do đó nó có độ ưu tiên mặc định là 10.
  • Tiếp theo là callback_1() vì nó có mức ưu tiên là 11.
  • Cuối dùng là callback_4(), nó củng có độ ưu tiên là 11, nhưng nó được gọi sau callback_1().

$accepted_args – Số lượng tham số

Đây là số lượng tham số của hàm callback sử dụng.
Ví dụ:

add_action( 'init', 'my_callback', 10, 3 );
function my_callback( $a, $b, $c ) {
   // code
}

Tạo một Actions Hook cho riêng bạn

Việc tự tạo một Action Hook và chạy nó rất đơn giản, bạn chỉ việc làm theo hướng dẫn bên trên, sau đó thực thi bằng hàm do_action()
Ví dụ:

add_action( 'my_action', 'my_callback', 10, 3 );
function my_callback( $a, $b, $c ) {
    echo 'nhut.me';
}

Sau đó gọi action ở nơi bạn muốn:

do_action('my_action');