一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

DEDECMS|帝國CMS|Discuz|PHPCMS|Wordpress|ZBLOG|ECSHOP|蘋果CMS|極致CMS|CMS系統|

服務器之家 - 建站程序 - Wordpress - wordpress開發之插件開發初識(wordpress插件開發基礎)

wordpress開發之插件開發初識(wordpress插件開發基礎)

2019-09-12 14:56湘愛琴 Wordpress

這篇我們介紹如何開發一個Wordpress插件,需要的朋友可以參考下

wordpress開發之插件開發初識(wordpress插件開發基礎)

首先,你要在wp-content/plugins/下建立一個文件夾,文件夾的名字最好只由字母、數字、“-”和下滑組成。同時,還要在這個文件夾下建立一個同名的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的頭部包含了對這個插件的基本描述信息。關于readme.txt的格式,可以參考WordPress的官方示例。因為這里只是簡單的寫一個可用的Plugin,就不介紹reaadme.txt了。
WordPress的插件其實就是一堆php的方法。這些方法通過調用系統自帶的鉤子來為博客增加新的功能。下面我們就來看一下什么是系統的鉤子。
插件鉤子

WordPress定義了很多不同用途的鉤子,在Wordpress運行的不同階段,它會檢測當前階段是否注冊了鉤子函數,如果有,則優先執行這些函數。添加filter的方法如下:

 

復制代碼

代碼如下:

add_filter('filter_name', 'filter_callback_function_name', $priority=10, $accepted_args=1);

 

add_fitler的四個參數分別是:要掛載的鉤子的名稱,鉤子的回調函數,回調函數的優先級,回調函數的參數個數。一個例子如下:

 

復制代碼

代碼如下:


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

 

這個例子中,我們在the_title鉤子上掛載了一個my_title的函數,這個函數接受兩個參數,每別是文章的標題和ID,當Wordpress要把文章post給瀏覽器之前,會首先調用到這個函數,在這里,我們在每個文章的標題前加了一個“News:”。
關于Wordpress所提供的所有鉤子,可以參考Wordpress的官網文檔:Filter Reference。
另外你可能會在某些文章中看到令一個添加鉤子的函數add_action。我們來看一下wordpress的內核你或許就明白了:

 

復制代碼

代碼如下:


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本質上沒有任何區別。
之前說過,Wordpress會在系統的不同階段調用不同的鉤子,其實,如果需要,你也可以在你的代碼里手動調用這些鉤子。方法如下:

 

復制代碼

代碼如下:


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

 

有了這些filter,你就可以在wordpress處理流程中的任意地方修改數據內容,實現插件所需要的功能。
Option機制

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

 

復制代碼

代碼如下:


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

 

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

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

 

復制代碼

代碼如下:


<?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();

 

上面創建的類會在你的Wordpress后臺添加一個新頁面,同時它允許用戶保存一個id值。

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费一区二区 | 男人最爱看的网站 | 午夜精品久久久久久久99 | 青青色在线观看 | 色综合国产 | 欧美vpswindows动物 | 国产一区二区免费不卡在线播放 | 亚洲AV久久无码精品九九软件 | bedfriend泰剧全集免费观看 | 好舒服好爽再快点视频 | 国内精品一区二区在线观看 | 亚洲成人视屏 | 4399h漫画| 99久久免费国产香蕉麻豆 | 白发在线视频播放观看免费 | 秋霞午夜| 成人免费视频大全 | 三上悠亚国产精品一区 | 亚洲国产一区二区a毛片 | 日韩欧美在线视频一区二区 | 四虎永久视频 | ai换脸杨幂被c在线观看 | 成人福利网站 | 男人午夜禁片在线观看 | 青青草原手机在线视频 | 国产精品夜色视频一级区 | 亚洲精品中文字幕久久久久久 | 美女被视频网站看免费入口 | 99久久精品免费看国产情侣 | 精品一区二区三区免费观看 | 日韩手机在线观看 | a级片欧美| 三体动漫在线观看免费完整版2022 | 国产成人h综合亚洲欧美在线 | 亚洲酒色1314狠狠做 | 亚洲老头老太hd | 精品性影院一区二区三区内射 | v视界影院_vsjla | 色视频国产 | 色老头oldmoneyvideos | 91社区在线观看精品 |