ݺߣ

ݺߣShare a Scribd company logo
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ì?
www.zend.vn
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
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
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
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
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
Ví dụ
function zendvn_myplugin_new_css(){
$cssURL = plugins_url('/css/abc.css',__FILE__);
$css = '<link rel="stylesheet" type="text/css“
media="all" href="' . $cssURL . '" />';
echo $css;
}
add_action('wp_head', 'zendvn_myplugin_new_css',20);
remove_action('wp_head', 'zendvn_myplugin_new_css',20);
www.zend.vn
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

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
  • 8. Ví dụ function zendvn_myplugin_new_css(){ $cssURL = plugins_url('/css/abc.css',__FILE__); $css = '<link rel="stylesheet" type="text/css“ media="all" href="' . $cssURL . '" />'; echo $css; } add_action('wp_head', 'zendvn_myplugin_new_css',20); remove_action('wp_head', 'zendvn_myplugin_new_css',20); 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