Thứ Tư, 22 tháng 5, 2013

Write Plugin For Wordpress

Tạo một file tên là stripUnicode.php nằm trong folder có đường dẫn như sau:
Wordpress/wp-content/plugins/stripUnicode.php

Các bạn mở file này lên và viết một số đoạn code như sau:
PHP Code:
/*
Plugin Name: stripUnicode
Plugin URI: localhost
Description: Plugin remove Unicode
Author: TheHalfHeart
Version: 1.0
Author URI: TheHalfHeart@gmail.com
*/

function stripUnicode($str) {
        if (!
$str)
            return 
false;
        
$unicode = array(
            
'a' => 'á|à|ả|ã|ạ|ă|ắ|ặ|ằ|ẳ|ẵ|â|ấ|ầ|ẩ|ẫ|ậ',
            
'd' => 'đ',
            
'e' => 'é|è|ẻ|ẽ|ẹ|ê|ế|ề|ể|ễ|ệ',
            
'i' => 'í|ì|ỉ|ĩ|ị',
            
'o' => 'ó|ò|ỏ|õ|ọ|ô|ố|ồ|ổ|ỗ|ộ|ơ|ớ|ờ|ở|ỡ|ợ',
            
'u' => 'ú|ù|ủ|ũ|ụ|ư|ứ|ừ|ử|ữ|ự',
            
'y' => 'ý|ỳ|ỷ|ỹ|ỵ',
        );
        foreach (
$unicode as $nonUnicode => $uni)
            
$str preg_replace("/($uni)/i"$nonUnicode$str);
        return 
$str;
    } 

- Nhìn code của function stripUnicode các bạn cũng biết chức năng nó là chuyển đổi một đoạn chữ có dấu sang không có dấu. thường dùng để tạo đường link thân thiện

- Trong đoạn comment đầu tiên chính là khai báo cấu trúc của plugin và cũng là khai báo cho wordpress biết đây là một plugin. Vậy các bạn thấy plugin có gì khác lạ không cũng bình thường nhỉ chỉ là những đoạn code bình thường nhằm thực hiện một cái gì đó chứ ko phải nó to tác như trong đầu các bạn đang suy nghĩ. Hồi xưa mình cũng vậy. mới vào nghe viết plugin wordpress nghe ghê gớm lắm nhưng thực ra chỉ là thế :D

- Khai báo tên của plugin
PHP Code:
 Plugin NamestripUnicode 

- Khai báo nguồn gốc của plugin
PHP Code:
 Plugin URIlocalhost 

- Mô tả sơ lược về plugin này
PHP Code:
 DescriptionPlugin remove Unicode 
- Tác giả, version và đường link của tác giả.
PHP Code:
 AuthorTheHalfHeart
Version
1.0
Author URI
TheHalfHeart@gmail.com 

- Trong số những thôg tin trên thì Plugin name là quan trọng nhất. các bạn không thể thiếu dòng này

- Vậy là ta đã viết xong một plugin. Các bạn vào admin -> plugins thì sẽ thấy plugin strip Unicode mà ta vừa tạo ra. Các bạn active nó sau đó ra ngoài site xem trang xem chi tiết một bài viết bất kỳ nào đó. Điều gì xảy ra …. Chưa có gì đúng không nào.
Vấn đề ở đây là ta chưa khai báo sử dụng nó. Để sử dụng nó ta dùng đoạn code sau đây đặt bên dưới function stripUnicode
PHP Code:
 add_filter('the_title, 'stripUnicode' ); 

- Ý nghĩa của đoạn code như sau:
The_title các bạn cũng biết nó dùng để lấy tiêu đề một bài viết, còn stripUnicode dùng để chuyển về dạng chữ không có dấu. mỗi khi bạn gọi the_title thì nó sẽ gọi tới cái plugin stripUnicode và thực thi cái plugin này trả về kết quả cho bạn, cái mà nó return về cũng chính là cái the_title return về.

FULL CODE
PHP Code:
/*
Plugin Name: stripUnicode
Plugin URI: localhost
Description: Plugin remove Unicode
Author: TheHalfHeart
Version: 1.0
Author URI: TheHalfHeart@gmail.com
 */


if (version_compare($wp_version"2.5"'<'))
{
    die(
'Please update plugin');
}


function 
stripUnicode($str) {
        if (!
$str)
            return 
false;
        
$unicode = array(
            
'a' => 'á|à|ả|ã|ạ|ă|ắ|ặ|ằ|ẳ|ẵ|â|ấ|ầ|ẩ|ẫ|ậ',
            
'd' => 'đ',
            
'e' => 'é|è|ẻ|ẽ|ẹ|ê|ế|ề|ể|ễ|ệ',
            
'i' => 'í|ì|ỉ|ĩ|ị',
            
'o' => 'ó|ò|ỏ|õ|ọ|ô|ố|ồ|ổ|ỗ|ộ|ơ|ớ|ờ|ở|ỡ|ợ',
            
'u' => 'ú|ù|ủ|ũ|ụ|ư|ứ|ừ|ử|ữ|ự',
            
'y' => 'ý|ỳ|ỷ|ỹ|ỵ',
        );
        foreach (
$unicode as $nonUnicode => $uni)
            
$str preg_replace("/($uni)/i"$nonUnicode$str);
        return 
$str;
       
    }
   
    
add_filter('the_title''stripUnicode' ); 


- Ví dụ như sau: titile là “tôi là ai” thì nếu bạn không sử dụng plugin này khi bạn gọi the_title() thì nó sẽ lấy nguyên đoạn “tôi là ai”, ngược lại nếu bạn thực thi plugin này thì nó sẽ có kết quả là “toi la ai“.

- Các bạn nhìn cái function add_filter vậy nó là cái gì?

- Để tìm hiểu nó là cái gì trước tiên mình nói đên khái niệm HOOK LÀ GÌ?
Theo khái niêm của mình HOOK chính là những function mà wordpress đã viết sẵn giúp ta thao tác với CSDL hay một cái gì gì đó. chẳng hạng như the_title nó chính là một hook dùng để lấy tiêu đề bài viết và đay là một filter. Add_option dùng để them một record vào table option và đây là một action

- Ta thử so sánh với trigger trong CSDL xem sao. Trigger nó thực hiện ngầm cho một action nào đó ví dụ insert, update, delete. Với wordpress thì những hành động insert, update, delete đó chính là những cái HOOKS và cái plugin chính là cái trigger đó.

- Để xem danh sách các HOOK các bạn vào codex hoặc trang http://adambrown.info/p/wp_hooks/hook ở đó có danh sách tất cả các hook.

- ở trên mình có nhắc tới hook filter và hook action. Vậy filter là gì? Action là gì?
Nghe đến filter cũng đoán được ý nghĩa là định dạng lại một cái gì đó. ở ví dụ trên mình dùng add_filter tại vì mình dùng hook filter the_content. Coi ví dụ đó các bạn cũng hiểu được ý nghĩa cùa filter rồi phải ko nào. Nó thực hiện một thao tác chuyển đổi nào đó trước khi đưa ra màn hình hoặc trước khi insert vào db chẳng hạng.

- Còn action. Nếu hẳn các bạn biết MVC thì cũng biết action là gì rồi. nó là một hành động nào đó ví dụ như add_option dùng để thực hiện một action là insert dữ liệu.
Để hình dung hơn action là gì tôi lấy ví dụ như sau. Giả sử khi bạn xóa một bài post thì bạn muốn gửi một email thong báo đến admin là đã có một bài post bị xóa. Muốn như vậy thì ta sẽ viet một plugin gửi mail và dùng add_action để đưa nó vào hành động khi xóa đó là after_delete_post chẳng hạng. after_delete_post là một hook action các bạn có thể tìm thấy ở link tham khảo trên.

- Trên đó là những khái niêm mà tôi hiểu sao ghi vậy. Nhiều khi không đúng với định nghĩa thực tế có gì các bạn bổ sung them hoặc search
google ra rất là nhiều khái niệm

- Đọc tới đây chắc hẳn các bạn cũng hiểu sơ sơ khái niệm rồi nhỉ. Nếu mình trình bày khó hiểu thì các bạn có thể xem thêm các ví dụ dưới đây và làm theo. Các bạn sẽ hình dung được nó như thế nào :D.

Ví dụ 1: chuyển tất cả các tiêu đề bài viết thành chữ hoa. Ta sẻ sử dụng hook filter “the_title”

Hì đơn giản phải không nào. Trước tiên ta viết một plugin chuyển nhé. Ah mà hình như cái plugin chuyển thành chữ hoa có sẵn rồi thì phải. ta chỉ cần gọi nó ra đó chính là plugin strtoupper mà PHP đã cung cấp sẵn cho chúng ta.

Bước 1: tạo một file str_to_upper_title.php
Bước 2: khai báo wordpress biết đây là một plugin
PHP Code:
/*
Plugin Name: string to upper the title
Plugin URI:
Description:
Version:
Author:
Author URI:
 */ 

Bước 3: code cho plugin
PHP Code:

add_filter
(‘the_title’,’ strtoupper’); 

Vậy là xong rồi. các bạn thử bằng cách vào trang chi tiết bài viết xem cái tiêu đề nó bị biến dạng như thế nào nhé.

- Từ đây các bạn cũng có thể thấy đôi khi mình không cần phải viết plugin. Thay vào đó là những function có sẵn và cái ví dụ này tôi cũng đã chứng minh được rằng PLUGIN CHỈ LÀ FUNCTION

Ví dụ 2: Mỗi khi publish một bài post hay có một bài comment nào đó thì sẽ gửi mail đến tác giả của bài viết đó. Ta sẻ sử dụng hook action. publish_post và comment_post

Bước 1: tạo file send_mail_list.php
Bước 2: khai báo nơi thường trú :D
PHP Code:
/*
Plugin Name: Send mail to Author posted
Plugin URI:
Description:
Version:
Author:
Author URI:
 */ 
Bước 3: viết code send mail và thực hiện hook
PHP Code:
function mailing_list($post_ID)
{
$list 'john@somesite.com,becky@somesite.com';
mail($list'My Blog Update',
'My blog has just been updated: '.get_settings('home'));
}
// Send notification with every new post and comment
add_action('publish_post''mailing_list');
add_action('comment_post''mailing_list'); 


- Ví dụ này mình lấy từ cuốn Ebook ra tí nữa mình sẽ đưa link cho các bạn download cuốn ebook này.

- Đến đây coi như tôi đã demo xong phần plugin wordpress. Àh con vấn đề cần lưu ý là khi các bạn viết plugin nên có thêm đoạn code kiểm tra phiên bản plugin nhé.
Kết thúc bài này hi vọng các bạn có cái nhìn tổng thể plugin wordpress

Không có nhận xét nào:

Đăng nhận xét

Học lập trình web căn bản với PHP

Bài 1: Các kiến thức căn bản Part 1:  https://jimmyvan88.blogspot.com/2012/05/can-ban-lap-trinh-web-voi-php-bai-1-cac.html Part 2:  https://...