Móc wordpress

Trong bài viết hôm nay, các bạn sẽ có cái nhìn tổng quát về các hook hệ thống trong wordpress. WordPress được xây dựng từ một thư viện Hooks to, hầu như khi thiết kế wordpress bạn cũng phải sử dụng hook. Hooks được hiểu là các hàm (function), dùng để nhóm lại các hàm. ví dụ đơn giản. Để giải quyết một vấn đề, bạn có thể chia tách nhiều chức năng và kết hợp các cuộc gọi của chúng, Mục đích thiết kế cấu trúc wordpress này đã xây dựng các hook khai thác để liên kết 1 hook với nhiều chức năng

Có 2 loại hook là action và filter. Tất cả các hook được tạo ra thì lưu ở biến toàn cục

apply_filters('myfiter');
6 có kiểu mảng mà các key của nó là tên hook (hành động và bộ lọc)

Móc wordpress

bộ lọc

Hệ thống lọc bao gồm các chức năng của wordpress và do bạn tạo thêm. Khác với hành động, bộ lọc có thể trả lại giá trị.
Để đăng ký một bộ lọc, bạn sử dụng hàm add_filter.

add_filter( $tag, $function_to_add, $priority, $accepted_args );

in which

  • thẻ $. tên bộ lọc
  • $function_to_add. tên chức năng của bộ lọc, nó được gọi khi sử dụng
  • ưu tiên $. một bộ lọc có thể chứa nhiều hàm, chỉ thứ tự hàm này được gọi

Calling filter and transfer parameter for it. WordPress có bộ lọc

apply_filters('myfiter');
7 dùng để tạo ảnh chú thích, đoạn mã sau đây ta truyền 3 tham số vào bộ lọc
apply_filters('myfiter');
7

// Allow plugins/themes to override the default caption template.
$output = apply_filters('img_caption_shortcode', '', $attr, $content);
if ( $output != '' )
	return $output;

Tạo nhiều hàm sử dụng cho 1 bộ lọc

add_filter('myfilter','myfun1',3);
add_filter('myfilter','myfun2',1);
add_filter('myfilter','myfun3',2);
function myfun1(){
}
function myfun2(){
}
function myfun3(){}

Khi gọi myfilter thì gọi 3 hàm trên của filter theo thứ tự. myfun2,myfun3,myfun2

apply_filters('myfiter');

Các ví dụ khác về sử dụng bộ lọc

Thanh bên động tùy chỉnh, tạo hàm riêng thay vì sử dụng hàm lấy thanh bên

apply_filters('myfiter');
9

function mytheme_sidebar($name)
{
     $name = apply_filters('mytheme_sidebar', $name);
     get_sidebar($name);
}
//Then use your own filter to modify the sidebar
add_filter('mytheme_sidebar', 'mytheme_custom_sidebar');
function mytheme_custom_sidebar($name)
{
    return is_user_logged_in() ? 'loggedin' : $name;
}

Lưu ý. all the name hooks must be bình thường mới hoạt động chính xác

Hoạt động

Liên kết hành động với hàm bạn sử dụng

// Allow plugins/themes to override the default caption template.
$output = apply_filters('img_caption_shortcode', '', $attr, $content);
if ( $output != '' )
	return $output;
0. Cũng giống như bộ lọc 1 hành động có thể liên kết với nhiều hàm và tất cả các hàm của hành động được gọi khi bạn gọi do_action('your-action-name')

Ví dụ sau khi tạo hành động tùy chỉnh, chèn đoạn sau vào chức năng. php

/* a custom action hook */

/*
 * 1. Create your own custom action hook named 'the_action_hook'
 *    with just a line of code. Yes, it's that simple.
 *    
 *    The first argument to add_action() is your action hook name
 *    and the second argument is the name of the function that actually gets
 *    executed (that's 'callback function' in geek).
 *
 *    In this case you create an action hook named 'the_action_hook'
 *    and the callback function is 'the_action_callback'.
 */

add_action('the_action_hook', 'the_action_callback');

/*
 * 2. Declare the callback function. It prints a sentence.
 *    Note that there is no return value.
 */

function the_action_callback()
{
echo '

WordPress is nice!

'; } /* * 3. When you call do_action() with your action hook name * as the argument, all functions hooked to it with add_action() * (see step 1. above) get are executed - in this case there is * only one, the_action_callback(), but you can attach as many functions * to your hook as you like. * * In this step we wrap our do_action() in yet another * function, the_action(). You can actually skip this step and just * call do_action() from your code. */ function the_action() { do_action('the_action_hook'); }

Đến đây là bạn đã hiểu về cách active và cách sử dụng hook trong wordpress rồi chứ nhỉ. Chúc các bạn học tập tốt

Nếu bạn thấy bài viết này hữu ích, hãy chia sẻ với bạn bè bằng cách nhấn nút chia sẻ ở bên dưới. Theo dõi chúng tôi trên Twitter và Facebook

Trong bài này chúng ta sẽ tìm hiểu hook là gì, action là gì và filter là gì trong WordPress, đây là ba khái niệm bạn sẽ gặp rất nhiều trong quá trình học lập trình WordPress nâng cao như làm theme và plugin

Móc wordpress

Móc wordpress

Bài viết này đã được đăng tại freetuts. net , không được sao chép dưới mọi hình thức.

Bạn đã từng nghe về khái niệm thiết lập hướng sự kiện trong các Framework như Zend, Laravel, Phalcon rồi phải không? . Vậy thì trong WordPress có tồn tại khái niệm này không?

Thực ra WordPress chỉ là một phần mềm chạy trên web nền nên sự kiện của nó chính là các điểm nhấn trong quá trình biên dịch mã nguồn và bạn muốn có thể truy cập vào các điểm nhấn đó thì phải sử dụng các API của móc

Hãy đọc bài viết WordPress API nếu bạn chưa biết về nó

Bài viết này đã được đăng tại [free tuts. bọc lưới]

1. Hooks là gì?

Trong WordPress, hooks là danh sách các điểm nhấn (điểm móc) nằm trong hệ thống mã nguồn của WordPress, tại đây bạn có thể bổ sung các đoạn mã thông qua hai hàm add_action và add_filter mà WordPress đã cung cấp sẵn. Chúng ta có hai nhóm móc chính đó là bộ lọc và hành động

  • Bộ lọc là các điểm móc liên quan đến xử lý nội dung
  • Hành động là các điểm móc liên quan đến xử lý hành động

Ví dụ

(1) Bạn muốn kiểm tra loại bỏ các đường liên kết mà người quản trị đã cố gắng thêm vào khi sửa bài viết thì sẽ sử dụng hook có tên là save_post và nó thuộc nhóm hành động

add_action('save_post', 'function_name', 10, 2);

(2) Bạn muốn khi hiển thị nội dung bài viết ra bên ngoài giao diện người dùng thì thêm một dòng chữ ở vị trí cuối cùng của nội dung thì có thể sử dụng hook có tên là the_content và bộ lọc thuộc nhóm của nó

________số 8

Mỗi hook sẽ có các tham số truyền vào nhau, nên để chắc chắn thì trước khi sử dụng hook nào các bạn hãy lên trang codex để tham khảo nhé. Ví dụ với hook the_title thì sẽ có hai tham số truyền vào đó là

function mytheme_sidebar($name)
{
     $name = apply_filters('mytheme_sidebar', $name);
     get_sidebar($name);
}
//Then use your own filter to modify the sidebar
add_filter('mytheme_sidebar', 'mytheme_custom_sidebar');
function mytheme_custom_sidebar($name)
{
    return is_user_logged_in() ? 'loggedin' : $name;
}
0 và
add_filter( 'the_content', 'function_name', 1 );
0

Trường hợp trang codex không giải thích rõ về tham số thì bạn hãy tự mình debug bằng cách truyền tham số vào hàm

add_filter( 'the_content', 'function_name', 1 );
1 và kết hợp với hàm var_dump để vào xem nội dung của tham số đó

Trước khi tìm hiểu rõ hơn về action và filter thì bạn tạo cho mình hai file

add_filter( 'the_content', 'function_name', 1 );
2 và
add_filter( 'the_content', 'function_name', 1 );
3 nằm trong thư mục bao gồm của plugin có tên là wp-learn. Cấu trúc này mình đã tạo trong bài viết các bước tạo plugin WordPress, bạn có thể đọc nó nếu chưa biết

Móc wordpress

Tiếp theo bạn tạo tệp là

add_filter( 'the_content', 'function_name', 1 );
4 và bổ sung hai đoạn mã yêu cầu hai tệp đó vào như sau

// Allow plugins/themes to override the default caption template.
$output = apply_filters('img_caption_shortcode', '', $attr, $content);
if ( $output != '' )
	return $output;
4

Xem bài yêu cầu trong PHP nếu chưa biết hàm này

2. Lọc WordPress là gì?

Trong bộ lọc WordPress, các hook được ví như một bộ lọc vì các hook này liên quan đến xử lý nội dung dữ liệu. WordPress có rất nhiều loại bộ lọc và bạn có thể xem tại đây

Đặc điểm chung của bộ lọc này là mỗi hook sẽ trả về một nội dung nào đó và bạn sử dụng hàm add_filter để bổ sung .

Hàm

add_filter( 'the_content', 'function_name', 1 );
5 có cấu trúc như sau

// Allow plugins/themes to override the default caption template.
$output = apply_filters('img_caption_shortcode', '', $attr, $content);
if ( $output != '' )
	return $output;
6

in which

  • thẻ $. is name of filter hook
  • $function_to_add là hàm gọi lại muốn bổ sung vào
    add_filter( 'the_content', 'function_name', 1 );
    6
  • $priority là mức độ ưu tiên của hàm gọi lại, mức độ ưu tiên ngày càng cao thì hàm gọi lại đó sẽ được gọi trước. default value is 10
  • $accepted_args là tổng số tham số tham gia vào hàm gọi lại và không được thông qua quá tổng số hook. default value is 1

Ví dụ. Giả sử mình muốn khi đưa ra tiêu đề của các bài viết thì bổ sung thêm từ

add_filter( 'the_content', 'function_name', 1 );
7 ở đầu thì làm như sau

You open file

add_filter( 'the_content', 'function_name', 1 );
2 up and code as after

add_filter('myfilter','myfun1',3);
add_filter('myfilter','myfun2',1);
add_filter('myfilter','myfun3',2);
function myfun1(){
}
function myfun2(){
}
function myfun3(){}
0

in which

  • the_title là hook filter dùng để lấy tiêu đề bài viết
  • add_string_to_title là tên của hàm muốn bổ sung vào hook
    add_filter( 'the_content', 'function_name', 1 );
    9

Hook

add_filter( 'the_content', 'function_name', 1 );
9 sẽ truyền đề của bài viết vào hàm
// Allow plugins/themes to override the default caption template.
$output = apply_filters('img_caption_shortcode', '', $attr, $content);
if ( $output != '' )
	return $output;
41 và thực thi nó, sau đó lấy kết quả của hàm này trả về làm đề mới

Luồng xử lý như sau. Gả hàm

add_filter( 'the_content', 'function_name', 1 );
9 có nội dung như sau

add_filter('myfilter','myfun1',3);
add_filter('myfilter','myfun2',1);
add_filter('myfilter','myfun3',2);
function myfun1(){
}
function myfun2(){
}
function myfun3(){}
5

Lúc này ta sử dụng hàm

add_filter( 'the_content', 'function_name', 1 );
5 để bổ sung hàm gọi lại
// Allow plugins/themes to override the default caption template.
$output = apply_filters('img_caption_shortcode', '', $attr, $content);
if ( $output != '' )
	return $output;
41 vào
add_filter( 'the_content', 'function_name', 1 );
9 thì nó sẽ hoạt động ở dạng như sau

add_filter('myfilter','myfun1',3);
add_filter('myfilter','myfun2',1);
add_filter('myfilter','myfun3',2);
function myfun1(){
}
function myfun2(){
}
function myfun3(){}
9

Do đó thực chất khi bạn bổ sung một hành động nào đó vào bộ lọc thì tức là bạn bổ sung một đoạn mã xử lý trước khi bộ lọc đó trả về kết quả

3. Action WordPress là gì?

Action hooks là danh sách các hook liên quan đến xử lý sự kiện. Ví dụ khi bạn lưu một bài viết thì ta có hook save_post, khi người dùng bình luận thì có hook comment_post

Tất cả các hook đều quan trọng vì nó giúp chúng ta có thể thâm nhập vào hệ thống lõi mà không cần phải phá mã nguồn của WordPress. Ví dụ bạn muốn khi người dùng bình luận thì gửi email thông báo thì bạn sẽ viết một hàm gửi thư và đưa nó vào hook comment_post

Ta sử dụng hàm

// Allow plugins/themes to override the default caption template.
$output = apply_filters('img_caption_shortcode', '', $attr, $content);
if ( $output != '' )
	return $output;
46 để bổ sung hành động vào Action Hook. Hàm này có các tham số như sau

apply_filters('myfiter');
1

in which

  • thẻ $. is name of filter hook
  • $function_to_add là hàm gọi lại muốn bổ sung vào
    add_filter( 'the_content', 'function_name', 1 );
    6
  • $priority là mức độ ưu tiên của hàm gọi lại, mức độ ưu tiên ngày càng cao thì hàm gọi lại đó sẽ được gọi trước. default value is 10
  • $accepted_args là tổng số tham số tham gia vào hàm gọi lại và không được thông qua quá tổng số hook. default value is 1

Ví du. Khi lưu bài viết nếu bài viết ở trạng thái công khai thì hãy gửi email đến cho admin

Action hook lưu bài viết là

// Allow plugins/themes to override the default caption template.
$output = apply_filters('img_caption_shortcode', '', $attr, $content);
if ( $output != '' )
	return $output;
48, hook này có ba tham số truyền vào đó là

  • $id. id bài viết đang lưu hoặc mới bổ sung
  • $bài đăng. toàn bộ nội dung như tiêu đề, nội dung của bài viết
  • $is_update. if TRUE tức hành động lưu bài đăng này là cập nhật hành động, đảo ngược lại là hành động chèn

Ok bây giờ bạn mở file

add_filter( 'the_content', 'function_name', 1 );
3 up và code as after

apply_filters('myfiter');
5

Too menus must don't you. )

4. Lời kết

Tóm lại, qua bài này bạn đã học được những kiến ​​thức như sau

  • Hook WordPress chính là những điểm móc nằm trong hệ thống WordPress mà qua đó ta có thể xâm nhập vào mà không cần phải thay đổi core
  • Filter WordPress là những hook được sử dụng để xử lý dữ liệu nội dung trong WordPress
  • Action WordPress là những hook được sử dụng để xử lý hành động trong WordPress

Bài này tương đối khó hiểu, vì đây chính là nội dung quan trọng và quan trọng nhất mà bạn phải biết khi lập trình WordPress. Bạn phải hiểu nguyên lý hoạt động của nó thì sau này mới xây dựng được plugin và theme theo ý mình được