Transcript
Page 1: Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress

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

Page 2: Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress

Hook là gì?

Page 3: Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress

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.

Page 4: Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress

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

Page 5: Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress

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.

Page 6: Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress

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' );

Page 7: Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress

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.

Page 8: Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress

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);

Page 9: Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress

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

Page 10: Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress

Ví dụ

o Loại bỏ một Action có sẵn của hệ thống

remove_action('wp_head', 'rsd_link');

Page 11: Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress

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ỏ.

Page 12: Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress

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);

Page 13: Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress

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.

Page 14: Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress

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');

Page 15: Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress

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

Page 16: Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress

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.

Page 17: Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress

Ví dụ 1: Tạo Action Hook mới

o Tạo một Action Hook mới trong Pluginadd_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');

}

Page 18: Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress

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ả

Page 19: Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress

Ví dụ 2: Tạo Action Hook mới có tham số

o Tạo một Action Hook mới trong Pluginadd_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);

}

Page 20: Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress

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ả

Page 21: Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress

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'));

Page 22: Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress

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();

Page 23: Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress

Sử dụng Class cho Action

o Cách 3: sử dụng phương thức staticclass 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();