欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

wordpress開發(fā)之插件開發(fā)初識(shí)(wordpress插件開發(fā)基礎(chǔ))

湘愛琴   發(fā)布時(shí)間:2014-03-31 17:05:42   作者:佚名   我要評(píng)論
這篇我們介紹如何開發(fā)一個(gè)Wordpress插件,需要的朋友可以參考下

首先,你要在wp-content/plugins/下建立一個(gè)文件夾,文件夾的名字最好只由字母、數(shù)字、“-”和下滑組成。同時(shí),還要在這個(gè)文件夾下建立一個(gè)同名的php文件。比如你的文件夾名字為my-plugin,則php的名字就是my-plugin.php,這個(gè)文件做為你plugin的主文件,像主題文件的sytle.css文件一樣,它的頭部包含了對(duì)這個(gè)插件的描述信息。下面是一個(gè)簡單的例子:


復(fù)制代碼
代碼如下:

< ?php
/*
Plugin Name: 插件名稱
Plugin URI: http://URI_Of_Page_Describing_Plugin_and_Updates
Description: 插件的簡單描述
Version: 插件版本號(hào), 例如: 1.0
Author: 插件作者
Author URI: http://URI_Of_The_Plugin_Author作者地址
*/
?>

另外如果你想要把你的插件提交到wordpress.org上,你還要在文件夾中添加一個(gè)readme.txt文件。就像主題中的style.css文件一樣。類似的,readme.txt的頭部包含了對(duì)這個(gè)插件的基本描述信息。關(guān)于readme.txt的格式,可以參考WordPress的官方示例。因?yàn)檫@里只是簡單的寫一個(gè)可用的Plugin,就不介紹reaadme.txt了。
WordPress的插件其實(shí)就是一堆php的方法。這些方法通過調(diào)用系統(tǒng)自帶的鉤子來為博客增加新的功能。下面我們就來看一下什么是系統(tǒng)的鉤子。
插件鉤子

WordPress定義了很多不同用途的鉤子,在Wordpress運(yùn)行的不同階段,它會(huì)檢測當(dāng)前階段是否注冊(cè)了鉤子函數(shù),如果有,則優(yōu)先執(zhí)行這些函數(shù)。添加filter的方法如下:


復(fù)制代碼
代碼如下:
add_filter('filter_name', 'filter_callback_function_name', $priority=10, $accepted_args=1);

add_fitler的四個(gè)參數(shù)分別是:要掛載的鉤子的名稱,鉤子的回調(diào)函數(shù),回調(diào)函數(shù)的優(yōu)先級(jí),回調(diào)函數(shù)的參數(shù)個(gè)數(shù)。一個(gè)例子如下:


復(fù)制代碼
代碼如下:

add_fitler('the_title', 'my_title', 10, 2);
function my_title($title, $id) {
return News:$title;
}

這個(gè)例子中,我們?cè)趖he_title鉤子上掛載了一個(gè)my_title的函數(shù),這個(gè)函數(shù)接受兩個(gè)參數(shù),每別是文章的標(biāo)題和ID,當(dāng)Wordpress要把文章post給瀏覽器之前,會(huì)首先調(diào)用到這個(gè)函數(shù),在這里,我們?cè)诿總€(gè)文章的標(biāo)題前加了一個(gè)“News:”。
關(guān)于Wordpress所提供的所有鉤子,可以參考Wordpress的官網(wǎng)文檔:Filter Reference。
另外你可能會(huì)在某些文章中看到令一個(gè)添加鉤子的函數(shù)add_action。我們來看一下wordpress的內(nèi)核你或許就明白了:


復(fù)制代碼
代碼如下:

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會(huì)在系統(tǒng)的不同階段調(diào)用不同的鉤子,其實(shí),如果需要,你也可以在你的代碼里手動(dòng)調(diào)用這些鉤子。方法如下:


復(fù)制代碼
代碼如下:

$return_values = apply_filtere('filter_name', $args ... );

有了這些filter,你就可以在wordpress處理流程中的任意地方修改數(shù)據(jù)內(nèi)容,實(shí)現(xiàn)插件所需要的功能。
Option機(jī)制

僅僅有了filter還不夠,很多插件還需要保存一些信息,比方插件的屬性設(shè)置之類,這個(gè)時(shí)候你就要用到Wordpress的Option機(jī)制了。
WordPress的Option機(jī)制通過add_option,get_option, update_option三個(gè)函數(shù)來實(shí)現(xiàn),三個(gè)函數(shù)的定義如下:


復(fù)制代碼
代碼如下:

add_option($name, $value, $deprecated, $autoload);
get_option($name);
update_option($option_name, $newvalue);

add_option有4個(gè)參數(shù),功能分別如下:
$name:必選,變量名
$value:可選,變量值,默認(rèn)為空字符
$deprecated:沒用的參數(shù),純粹是歷史遺留問題。留著它只是為了兼容以有的插件。當(dāng)然如果你要調(diào)用到后面的$autoload,你需要為它傳入一個(gè)空字符或null。
$autoload: “yes” or “no”,默認(rèn)是”yes”,當(dāng)設(shè)為”yes”時(shí),該屬性會(huì)在wp_load_alloptions調(diào)用時(shí)獲取到。
get_option用來獲取你添加的參數(shù),同時(shí)系統(tǒng)中已經(jīng)默認(rèn)定義了一些參數(shù),你可以參考Wordpress的官方列表:Option Refernce。
而update_option則是用來更新option。
三個(gè)方法都比較好理解,我也不多說了。通過這三個(gè)方法你可以把你需要長久保存的數(shù)據(jù)放在數(shù)據(jù)庫中。
設(shè)置頁面

有了filter和option,我們已經(jīng)完成了一個(gè)插件的核心工作。不過做為一個(gè)插件,它經(jīng)常還需要為用戶提供一個(gè)設(shè)置頁面,也就是在Wordpress后臺(tái)插件列表中所看到的settings鏈接,如下圖:
settings
這里我們用一個(gè)最簡單的例子還說明如何添加一個(gè)設(shè)置頁面:


復(fù)制代碼
代碼如下:

<?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)建的類會(huì)在你的Wordpress后臺(tái)添加一個(gè)新頁面,同時(shí)它允許用戶保存一個(gè)id值。

到這里,我們一個(gè)簡單的Wordpress插件就完成了。雖然這個(gè)插件本身沒有什么用途。謝謝大家。

相關(guān)文章

最新評(píng)論