tài liệu lập trình wordpress - bài 5 - action và action hook trong wordpress

23
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

Upload: khanhpham

Post on 02-Jul-2015

1.292 views

Category:

Technology


4 download

DESCRIPTION

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

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