Giáo trình Lập trình Wordpress chuyên nghiệp
Hook giúp chúng ta gắn một số chức năng để thực thi những hành động mà chúng ta muốn mà không phải đụng vào bất cứ thứ gì ở trong core của WP.
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
WordPress có 2 kiểu Hook chính: Action hook và Filter hook.
Tóm tắt nội dung Giáo trình Lập trình Wordpress chuyên nghiệp, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
Click to edit Master title style Click to edit Master text styles Second level Third level Fourth level Fifth level 8/10/2014 ‹#› Hook Action Giáo trình: Lập trình Wordpress chuyên nghiệp Biên soạn: ZendVN Group Website: www.zend.vn Hook là gì? Hook là gì? Hook giúp chúng ta gắn một số chức năng để thực thi những hành động mà chúng ta muốn mà không phải đụng vào bất cứ thứ gì ở trong core của WP. 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 WordPress có 2 kiểu Hook chính: Action hook và Filter hook. Action là gì? Action là một hàm được viết bằng PHP trong Plugin Gắn Action vào hệ thống WP thông qua hàm có sẳn add_action() Action được viết ra để thực hiện một điều gì đó với hệ thống WP Xác định vị trí (Hook) để gắn Action đã viết của chúng ta Gắn Action vào Hook Để gắn một Action vào một vị trí (hook) nào đó chúng ta sẽ sử dụng hàm: add_action( $tag, $function, $priority, $accepted_args ); Tham số: $ tag - Là tên của một 'action hook' của WP (hơn 600 Hooks) $function - Tên Action mà bạn viết để tương tác vào hệ thống $priority – Độ ưu tiên của Action $accepted_args - Số lượng các tham số truy action hook sẽ được truyền vào hàm của bạn. Ví dụ function zendvn_myplugin_new_data(){ echo 'Chao mung cac ban den voi khoa lap trinh Wordpress chuyen nghiep cua ZendVN group '; } add_action('wp_footer', 'zendvn_myplugin_new_data' ); Loại bỏ Action ra khỏi Hook Để loại bỏ một Action ra khỏi một vị trí (hook) nào đó chúng ta sẽ sử dụng hàm: remove_action( $tag, $function_to_remove, $priority,$accepted_args ); Tham số: $ tag - Là tên của một 'action hook' của WP (hơn 600 Hooks) $function - Tên Action mà bạn viết để tương tác vào hệ thống $priority – Độ ưu tiên của Action $accepted_args - Số lượng các tham số truy action hook sẽ được truyền vào hàm của bạn. Ví dụ function zendvn_myplugin_new_css(){ $cssURL = plugins_url('/css/abc.css',__FILE__); $css = ''; echo $css; } add_action('wp_head', 'zendvn_myplugin_new_css',20); remove_action('wp_head', 'zendvn_myplugin_new_css',20); Sử dụng hàm loại bỏ Action Để loại bỏ một Action bất kỳ ra khỏi một vị trí (hook) kể cả Action đã có sẵn trong hệ thống WP Hàm remove_action() phải được sử dụng sau hàm add_action() thì mới có tác dụng Nhiều trong số các action mặc định của WP được định nghĩa trong tập tin: wp-includes/default-filters.php Ví dụ Loại bỏ một Action có sẵn của hệ thống remove_action('wp_head', 'rsd_link'); Loại bỏ tất cả Action Để loại bỏ tất cả Action ra khỏi một vị trí (hook) nào đó chúng ta sẽ sử dụng hàm: remove_all_actions( $tag, $priority ); Tham số: $tag - Tên của action hook $priority - Độ ưu tiên của action để loại bỏ. Ví dụ Loại bỏ tất cả Action có sẵn của hệ thống trong Action Hook có tên 'wp_head' remove_all_actions( 'wp_head' ); Loại bỏ tất cả Action có sẵn của hệ thống trong Action Hook có tên 'wp_head' và độ ưu tiên là 20 remove_all_actions( 'wp_head',20); Kiểm tra sự tồn tại Action trong Hook Để kiểm tra sự tồn tại của Action trong một Action Hook nào đó chúng ta sử dụng hàm has_action( $tag, $function_to_check ); Tham số: $tag - Tên của action hook $function_to_check - Tên của một hàm để kiểm tra xem nó có đã thêm vào hook chưa. Ví dụ Hàm sẽ trả về giá trị 1 hoặc true nếu trong Hook có gắn Action echo '' . has_action('wp_head'); Hàm sẽ trả về giá trị 0 hoặc null nếu trong Hook không gắn Action echo '' . has_action('wp_footer'); Các Action Hook thường sử dụng plugins_loaded init admin_menu template_redirect wp_head Trong phần nâng cao chúng ta sẽ nghiên cứu kỹ luồng và thứ tự chạy của các Action Hook trong chức năng như của WP Tạo Action Hook mới Vì nhu cầu của website chúng ta cần tạo ra một Action Hook mới Các Action Hook mới thường được gắn vào theme đang được sử dụng Chúng ta sẽ phải sử dụng 2 hàm có sẵn trong WP: là add_action() và do_action() để xây dựng Action Hook mới này. Ví dụ 1: Tạo Action Hook mới Tạo một Action Hook mới trong Plugin add_action('new_action_hook', 'new_action_callback'); function new_action_callback() { echo 'Khoa hoc lap trinh Wordpress tai ZendVN'; } function the_new_action() { do_action('new_action_hook'); } Ví dụ 1: Tạo Action Hook mới Nhúng Action Hook mới vào theme đang sử dụng Mở tập tin /wp-content/themes/twentyten/footer.php thêm vào 2 dòng sau: Sau đó chúng ta chạy thử ở FrontEnd sẽ thấy kết quả Ví dụ 2: Tạo Action Hook mới có tham số Tạo một Action Hook mới trong Plugin add_action('new_action_hook', 'new_action_callback',20,2); function new_action_callback($courseName,$author) { echo 'Khoa hoc lap trinh ' . $courseName . ' tai ' . $author . ' '; } function the_new_action($courseName = 'Wordpress',$author = "ZendVN") { do_action('new_action_hook',$courseName,$author); } Ví dụ 2: Tạo Action Hook mới có tham số Nhúng Action Hook mới vào theme đang sử dụng Mở tập tin /wp-content/themes/twentyten/footer.php thêm vào 2 dòng sau: Sau đó chúng ta chạy thử ở FrontEnd sẽ thấy kết quả Sử dụng Class cho Action Cách 1: cách đơn giản thường thấy class ZendvnMyPlugin{ public function thietlap(){ echo 'Su dung Class cho Plugin'; } } $zendvn_myplugin = new ZendvnMyPlugin(); add_action('wp_footer', array($zendvn_myplugin, 'thietlap')); Sử dụng Class cho Action Cách 2: sử dụng hàm __construct() class ZendvnMyPlugin{ public function __construct(){ add_action('wp_footer', array($this, 'thietlap')); } public function thietlap(){ echo 'Su dung Class cho Plugin 2'; } } new ZendvnMyPlugin(); Sử dụng Class cho Action Cách 3: sử dụng phương thức static class ZendvnMyPlugin{ public static function init(){ add_action('wp_footer', array(__CLASS__, 'thietlap')); } public function thietlap(){ echo 'Su dung Class cho Plugin 3'; } } ZendvnMyPlugin::init();
File đính kèm:
- Giáo trình Lập trình Wordpress chuyên nghiệp.pptx