wordpress開發(fā)之插件開發(fā)初識(wordpress插件開發(fā)基礎(chǔ))
首先,你要在wp-content/plugins/下建立一個文件夾,文件夾的名字最好只由字母、數(shù)字、“-”和下滑組成。同時,還要在這個文件夾下建立一個同名的php文件。比如你的文件夾名字為my-plugin,則php的名字就是my-plugin.php,這個文件做為你plugin的主文件,像主題文件的sytle.css文件一樣,它的頭部包含了對這個插件的描述信息。下面是一個簡單的例子:
< ?php
/*
Plugin Name: 插件名稱
Plugin URI: http://URI_Of_Page_Describing_Plugin_and_Updates
Description: 插件的簡單描述
Version: 插件版本號, 例如: 1.0
Author: 插件作者
Author URI: http://URI_Of_The_Plugin_Author作者地址
*/
?>
另外如果你想要把你的插件提交到wordpress.org上,你還要在文件夾中添加一個readme.txt文件。就像主題中的style.css文件一樣。類似的,readme.txt的頭部包含了對這個插件的基本描述信息。關(guān)于readme.txt的格式,可以參考WordPress的官方示例。因?yàn)檫@里只是簡單的寫一個可用的Plugin,就不介紹reaadme.txt了。
WordPress的插件其實(shí)就是一堆php的方法。這些方法通過調(diào)用系統(tǒng)自帶的鉤子來為博客增加新的功能。下面我們就來看一下什么是系統(tǒng)的鉤子。
插件鉤子
WordPress定義了很多不同用途的鉤子,在Wordpress運(yùn)行的不同階段,它會檢測當(dāng)前階段是否注冊了鉤子函數(shù),如果有,則優(yōu)先執(zhí)行這些函數(shù)。添加filter的方法如下:
add_fitler的四個參數(shù)分別是:要掛載的鉤子的名稱,鉤子的回調(diào)函數(shù),回調(diào)函數(shù)的優(yōu)先級,回調(diào)函數(shù)的參數(shù)個數(shù)。一個例子如下:
add_fitler('the_title', 'my_title', 10, 2);
function my_title($title, $id) {
return News:$title;
}
這個例子中,我們在the_title鉤子上掛載了一個my_title的函數(shù),這個函數(shù)接受兩個參數(shù),每別是文章的標(biāo)題和ID,當(dāng)Wordpress要把文章post給瀏覽器之前,會首先調(diào)用到這個函數(shù),在這里,我們在每個文章的標(biāo)題前加了一個“News:”。
關(guān)于Wordpress所提供的所有鉤子,可以參考Wordpress的官網(wǎng)文檔:Filter Reference。
另外你可能會在某些文章中看到令一個添加鉤子的函數(shù)add_action。我們來看一下wordpress的內(nèi)核你或許就明白了:
function add_action($tag, $function_to_add, $priority = 10, $accept_args = 1) {
return add_filter($tag, $function_to_add, $priority, $accept_args);
}
所以add_action和add_filter本質(zhì)上沒有任何區(qū)別。
之前說過,Wordpress會在系統(tǒng)的不同階段調(diào)用不同的鉤子,其實(shí),如果需要,你也可以在你的代碼里手動調(diào)用這些鉤子。方法如下:
$return_values = apply_filtere('filter_name', $args ... );
有了這些filter,你就可以在wordpress處理流程中的任意地方修改數(shù)據(jù)內(nèi)容,實(shí)現(xiàn)插件所需要的功能。
Option機(jī)制
僅僅有了filter還不夠,很多插件還需要保存一些信息,比方插件的屬性設(shè)置之類,這個時候你就要用到Wordpress的Option機(jī)制了。
WordPress的Option機(jī)制通過add_option,get_option, update_option三個函數(shù)來實(shí)現(xiàn),三個函數(shù)的定義如下:
add_option($name, $value, $deprecated, $autoload);
get_option($name);
update_option($option_name, $newvalue);
add_option有4個參數(shù),功能分別如下:
$name:必選,變量名
$value:可選,變量值,默認(rèn)為空字符
$deprecated:沒用的參數(shù),純粹是歷史遺留問題。留著它只是為了兼容以有的插件。當(dāng)然如果你要調(diào)用到后面的$autoload,你需要為它傳入一個空字符或null。
$autoload: “yes” or “no”,默認(rèn)是”yes”,當(dāng)設(shè)為”yes”時,該屬性會在wp_load_alloptions調(diào)用時獲取到。
get_option用來獲取你添加的參數(shù),同時系統(tǒng)中已經(jīng)默認(rèn)定義了一些參數(shù),你可以參考Wordpress的官方列表:Option Refernce。
而update_option則是用來更新option。
三個方法都比較好理解,我也不多說了。通過這三個方法你可以把你需要長久保存的數(shù)據(jù)放在數(shù)據(jù)庫中。
設(shè)置頁面
有了filter和option,我們已經(jīng)完成了一個插件的核心工作。不過做為一個插件,它經(jīng)常還需要為用戶提供一個設(shè)置頁面,也就是在Wordpress后臺插件列表中所看到的settings鏈接,如下圖:
settings
這里我們用一個最簡單的例子還說明如何添加一個設(shè)置頁面:
<?php class wctest{
public function __construct(){
if(is_admin()){
add_action('admin_menu', array($this, 'add_plugin_page'));
add_action('admin_init', array($this, 'page_init'));
}
}
public function add_plugin_page(){
// This page will be under "Settings"
add_options_page('Settings Admin', 'Settings', 'manage_options', 'test-setting-admin', array($this, 'create_admin_page'));
}
public function create_admin_page(){
?>
<div>
< ?php screen_icon(); ?>
<h2>Settings</h2>
<form method=”post” action=”options.php”>
< ?php
// This prints out all hidden setting fields
settings_fields(‘test_option_group’);
do_settings_sections(‘test-setting-admin’);
?>
< ?php submit_button(); ?>
</form>
</div>
< ?php
}
public function page_init(){
register_setting(‘test_option_group’, ‘array_key’, array($this, ‘check_ID’));
add_settings_section(
‘setting_section_id’,
‘Setting’,
array($this, ‘print_section_info’),
‘test-setting-admin’
);
add_settings_field(
‘some_id’,
‘Some ID(Title)’,
array($this, ‘create_an_id_field’),
‘test-setting-admin’,
‘setting_section_id’
);
}
public function check_ID($input){
if(is_numeric($input['some_id'])){
$mid = $input['some_id'];
if(get_option(‘test_some_id’) === FALSE){
add_option(‘test_some_id’, $mid);
}else{
update_option(‘test_some_id’, $mid);
}
}else{
$mid = ”;
}
return $mid;
}
public function print_section_info(){
print ‘Enter your setting below:’;
}
public function create_an_id_field(){
?><input type=”text” id=”input_whatever_unique_id_I_want” name=”array_key[some_id]” value=”<?=get_option(‘test_some_id’);?/>” />< ?php
}
}
$wctest = new wctest();
上面創(chuàng)建的類會在你的Wordpress后臺添加一個新頁面,同時它允許用戶保存一個id值。
到這里,我們一個簡單的Wordpress插件就完成了。雖然這個插件本身沒有什么用途。謝謝大家。
上一篇:如何使用wordpress鉤子函數(shù)在發(fā)表文章的同時添加一條記錄
欄 目:WordPress
下一篇:WordPress實(shí)現(xiàn)自動拒絕垃圾評論的方法
本文標(biāo)題:wordpress開發(fā)之插件開發(fā)初識(wordpress插件開發(fā)基礎(chǔ))
本文地址:http://mengdiqiu.com.cn/a1/WordPress/12766.html
您可能感興趣的文章
- 05-31wordpress修改后臺登錄地址教程
- 05-31WordPress自定義用戶頭像實(shí)現(xiàn)代碼
- 01-11修改wordpress上傳臨時目錄解決wordpress無法安裝插件包的方法
- 01-11WordPress增加文章排序方式
- 01-11自己做wordpress評論插件修改評論樣式(兩步美化評論內(nèi)容)
- 01-11wordpress get
- 01-11wordpress獲取文章評論數(shù)過濾掉作者代碼分享
- 01-11在wordpress文章末尾添加內(nèi)容的簡單方法
- 01-11不用wordpress插件顯示文章瀏覽統(tǒng)計功能代碼修改(原理分析)
- 01-11wordpress dynamic


閱讀排行
本欄相關(guān)
- 05-31wordpress修改后臺登錄地址教程
- 05-31WordPress自定義用戶頭像實(shí)現(xiàn)代碼
- 01-11WordPress增加文章排序方式
- 01-11修改wordpress上傳臨時目錄解決wordpre
- 01-11wordpress get
- 01-11自己做wordpress評論插件修改評論樣式
- 01-11在wordpress文章末尾添加內(nèi)容的簡單方
- 01-11wordpress獲取文章評論數(shù)過濾掉作者代
- 01-11wordpress dynamic
- 01-11不用wordpress插件顯示文章瀏覽統(tǒng)計功
隨機(jī)閱讀
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10C#中split用法實(shí)例總結(jié)
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10delphi制作wav文件的方法
- 04-02jquery與jsp,用jquery
- 01-11ajax實(shí)現(xiàn)頁面的局部加載