Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress
Hook giống như là xương sống của WordPress. Chúng cho phép các lập trình viên gắn (hook) các Plugin vào quá trình hoạt động của hệ thống WP để thay đổi một số cách thức hoạt động mà không cần trực tiếp sửa chữa trong lõi của WP. Điều này cho phép người dùng dễ dàng nâng cấp lên phiên bản mới hơn của WP mà không mất đi các đoạn mã đã sửa đổi
Để tìm hiểu kỹ hơn về bài học này các bạn hãy truy cập;
Website: www.zend.vn
Facebook: https://www.facebook.com/zendvngroup
1 of 23
Downloaded 174 times
More Related Content
Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress
1. 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
3. Hook là gì?
o 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.
o 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.
o Hook cũng được sử dụng trong Core của WP
o WordPress có 2 kiểu Hook chính: Action hook và Filter
hook.
www.zend.vn
4. Action là gì?
o Action là một hàm được viết bằng PHP trong Plugin
o Gắn Action vào hệ thống WP thông qua hàm có sẳn
add_action()
o Action được viết ra để thực hiện một điều gì đó với hệ
thống WP
o Xác định vị trí (Hook) để gắn Action đã viết của chúng ta
www.zend.vn
5. Gắn Action vào Hook
o Để 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 );
o 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.
www.zend.vn
6. Ví dụ
function zendvn_myplugin_new_data(){
echo '<div>Chao mung cac ban den voi khoa lap
trinh Wordpress chuyen nghiep cua
<a href="http://www.zend.vn">ZendVN group</a>
</div>';
}
add_action('wp_footer', 'zendvn_myplugin_new_data' );
www.zend.vn
7. Loại bỏ Action ra khỏi Hook
o Để 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 );
o 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.
www.zend.vn
9. Sử dụng hàm loại bỏ Action
o Để 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
o Hàm remove_action() phải được sử dụng sau hàm
add_action() thì mới có tác dụng
o 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
www.zend.vn
10. Ví dụ
o Loại bỏ một Action có sẵn của hệ thống
remove_action('wp_head', 'rsd_link');
www.zend.vn
11. Loại bỏ tất cả Action
o Để 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 );
o Tham số:
$tag - Tên của action hook
$priority - Độ ưu tiên của action để loại bỏ.
www.zend.vn
12. Ví dụ
o 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' );
o 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);
www.zend.vn
13. Kiểm tra sự tồn tại Action trong Hook
o Để 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 );
o 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.
www.zend.vn
14. Ví dụ
o Hàm sẽ trả về giá trị 1 hoặc true nếu trong Hook có gắn
Action
echo '<br/>' . has_action('wp_head');
o Hàm sẽ trả về giá trị 0 hoặc null nếu trong Hook không
gắn Action
echo '<br/>' . has_action('wp_footer');
www.zend.vn
15. Các Action Hook thường sử dụng
o plugins_loaded
o init
o admin_menu
o template_redirect
o wp_head
o 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
www.zend.vn
16. Tạo Action Hook mới
o Vì nhu cầu của website chúng ta cần tạo ra một Action
Hook mới
o Các Action Hook mới thường được gắn vào theme đang
được sử dụng
o 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.
www.zend.vn
17. Ví dụ 1: Tạo Action Hook mới
o Tạo một Action Hook mới trong Plugin
add_action('new_action_hook', 'new_action_callback');
function new_action_callback()
{
echo '<p>Khoa hoc lap trinh Wordpress tai ZendVN</p>';
}
function the_new_action()
{
do_action('new_action_hook');
}
www.zend.vn
18. Ví dụ 1: Tạo Action Hook mới
o Nhúng Action Hook mới vào theme đang sử dụng
o Mở tập tin /wp-content/themes/twentyten/footer.php thêm
vào 2 dòng sau:
<?php the_new_action(); ?>
<?php do_action('new_action_hook'); ?>
o Sau đó chúng ta chạy thử ở FrontEnd sẽ thấy kết quả
www.zend.vn
19. Ví dụ 2: Tạo Action Hook mới có tham số
o 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 '<p>Khoa hoc lap trinh ' . $courseName
. ' tai ' . $author . ' </p>';
}
function the_new_action($courseName = 'Wordpress',$author = "ZendVN")
{
do_action('new_action_hook',$courseName,$author);
}
www.zend.vn
20. Ví dụ 2: Tạo Action Hook mới có tham số
o Nhúng Action Hook mới vào theme đang sử dụng
o Mở tập tin /wp-content/themes/twentyten/footer.php thêm
vào 2 dòng sau:
<?php the_new_action(); ?>
<?php do_action('new_action_hook','ZF 2x','ZendVN'); ?>
o Sau đó chúng ta chạy thử ở FrontEnd sẽ thấy kết quả
www.zend.vn
21. Sử dụng Class cho Action
o Cách 1: cách đơn giản thường thấy
class ZendvnMyPlugin{
public function thietlap(){
echo '<br/>Su dung Class cho Plugin';
}
}
$zendvn_myplugin = new ZendvnMyPlugin();
add_action('wp_footer', array($zendvn_myplugin, 'thietlap'));
www.zend.vn
22. Sử dụng Class cho Action
o 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 '<br/>Su dung Class cho Plugin 2';
}
}
new ZendvnMyPlugin();
www.zend.vn
23. Sử dụng Class cho Action
o 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 '<br/>Su dung Class cho Plugin 3';
}
}
ZendvnMyPlugin::init();
www.zend.vn