本篇的內容主要來自Tutorial: How to write a WordPress Plugin?的一些心得記錄!我把內容分成以下幾個部分
- Basic
- Plugin File & Name
- Add action in your plugin
- Test Hello-world plugin
- Advanced(write plugin option page)
- Activating/Deactivating Plugin
- Write setting page
這篇網誌主要內容為Basic,我會在另外一篇描述Advanced的部分
Basic
Plugin File and Name
學習一個新語言或是Framework的開頭不外乎都是Hello World啦!所以事不宜遲馬上先來創建一個Hello World的資料夾在以及一個hello_world.php創建好之後在hello_world.php加上Plugin Infomation,也就是讓wordpress認識plugin
<?php /* Plugin Name: Hello-World Plugin URI: 'URL' Description: A simple hello world wordpress plugin Version: 1.0 Author: 'YOUR NAME' Author URI: 'URL' License: GPL */ ?>把整個hello_world資料夾上傳到server裡的wordpress資料夾(wordpress/wp-content/plugins),然後打開wordpress後台就可以看到Plugin喏
Add action in your plugin
完成上面的步驟後只是代表我們讓Wordpress知道有這個Plugin存在,此時Plugin還沒有任何功能,不過在加功能之前先來看一下兩個重要的函數add_action($tag,$func); //does an action at various points of wordpress execution add_filter($tag,$func); //does filtering the data //(eg. escaping quotes before mysql insert, or during output to browser.剛開始看這兩個函數的時候覺得很奇怪,到底什麼是Action,什麼是Filter,上網搜尋了一下資料得到的解釋如下
- Action: 在特定的時候會發生某事情,例如當主頁面被載入的時候為echo Hello World
- Filter: 對資料庫內的資料進行修改或是截取,例如讓文章內容只顯示50個句子
解釋完掛鉤的概念之後,馬上在hello_world.php加個echo的功能
<php add_action('init','hello_world'); function hello_world(){ echo "Hello World"; } ?>
然後到目前使用的theme中(wp-content/themes/usingtheme)的index.php裡面加上
<?php if(function_exists('hello_world')){ hello_world(); } ?>
此時打開網誌就可以看到如下
很順利地看到我們我plugin成功喏!在這裏解釋一下,由於我們在plugin在show出blog page的時候已經"先"把功能掛倒Wordpress,也就是在'init'這個時間點把功能掛上去,此時當主題load進來的時候,因為整個Wordpress認識hello_world()這個function,所以這時在主題的index.php就知道hello_world()這個function啦!
最後掛鉤的時間點可以去參考codex的Plugin API/Action Reference,這部分可能要先了解一下wordpress的life cycle,不過這裡我還在研究當中,等到了解再來記錄!
沒有留言:
張貼留言