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 Show 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) bộ lọcHệ 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ị. add_filter( $tag, $function_to_add, $priority, $accepted_args ); in which
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ọcThanh 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 độngLiê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 ''; } /* * 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 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
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 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 // Allow plugins/themes to override the default caption template. $output = apply_filters('img_caption_shortcode', '', $attr, $content); if ( $output != '' ) return $output;6 in which
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
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
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à
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ếtTóm lại, qua bài này bạn đã học được những kiến thức như sau
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 |