Header Ads Widget

Cách sử dụng Action Hook

Action Hook chính là một điểm neo để thực hiện một hành động nào đó tại một chu kỳ nhất định.



Để sử dụng Action Hook, chúng ta sẽ phải tạo ra một hàm chứa đoạn script PHP cần chạy (gọi là callback function), sau đó sử dụng hàm add_action() trong WordPress để móc cái callback của mình vào cái action hook cần cho nó móc vào.

function chiaseaz_hello(){
    echo 'Hello World';
}
add_action( 'init', 'chiaseaz_hello' )
Đặt hàm này ở functions.php trong theme hoặc trong plugin.

Cấu trúc sử dụng của hàm add_action():
add_action( $hook, $function_to_add, $priority, $accepted_args );
Trong đó:
$hook (string) (bắt buộc) – Tên hook cần móc vào.
$function_to_add (callback) (bắt buộc) – Tên hàm cần sử dụng.
$priority (integer) (tuỳ chọn) – Mức độ ưu tiên của hàm này thực thi với các hàm khác nếu nó có chung một hook. Mặc định là 10, số càng nhỏ thì nó càng thực hiện sớm hơn.
$accepted_args (integer) (tuỳ chọn) – Số lượng tham số được sử dụng trong hàm callback. Mặc định là 1.

Action Hook được tạo ra bằng hàm do_action(), hàm này chỉ đơn giản là khai báo một điểm neo ngay tại vị trí của nơi nó cần thực thi. Do tính chất của nó chỉ là khai báo điểm neo nên nó có thể sử dụng như tạo điểm neo hành động trong một chu kỳ nào đó, hoặc bạn có thể chèn thêm một cái gì đó vào ngay tại vị trí của điểm neo.

Ví dụ bạn có thể khai báo một action hook tên chiaseaz_before_content trong template ở vị trí bất kỳ với đoạn code sau (đặt vào template của theme):
<?php do_action( 'chiaseaz_before_content' ); ?>
Và bây giờ, nếu bạn muốn chèn một cái gì đó hoặc thực thi cái gì đó ngay tại vị trí mà bạn đã chèn hook chiaseaz_before_content thì chỉ cần móc nó vào một hàm callback nào đó là được.

pre_get_posts

Đây là hook mà bạn sẽ sử dụng nếu như bạn cần thay đổi lại tham số của truy vấn ở một trang nào đó bằng hàm callback của mình. Hook này được gọi ra sau khi truy vấn mặc định của WordPress được tạo ra nhưng trước khi truy vấn được chạy. Hook này thường được sử dụng kèm với đối tượng $query để sửa lại tham số của truy vấn hay làm việc gì đó để thao tác với truy vấn mặc định.

Ví dụ: Lấy bài viết ngẫu nhiên sử dụng phương thức $query->set() trong hook này.

Các hàm điều kiện khi dùng trong hook này sẽ phải viết dưới dạng phương thức của $query. Ví dụ: $query->is_home().
function chiaseaz_modify_archive_query( $query ) { // khai báo biến cần sử dụng trong callback
    if( $query->is_archive() && $query->is_main_query() ) : // is_main_query được sử dụng để tránh nó can thiệp vào truy vấn không phải mặc định
        $query->set('orderby', 'rand'); // orderby=rand => sắp xếp bài ngẫu nhiên
        $query->set('posts_per_page', '1'); // posts_per_page=1 => hiển thị 1 bài mỗi trang
    endif;
}
add_action( 'pre_get_posts', 'chiaseaz_modify_archive_query' );

wp_head

Hook này sẽ được sử dụng nếu như bạn muốn chèn một cái gì đó vào cặp thẻ <head> của theme mà không cần sửa template của theme.
function chiaseaz_insert_head(){
    echo "<link rel='stylesheet' id='vce_style-css'  href='http://chiaseaz.com/wp-content/themes/chiaseaz-picture/css/min.css?ver=2.0' type='text/css' media='screen, print' />";
}
add_action( 'wp_head', 'chiaseaz_insert_head' );

Nhận xét