亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > 建站經驗 > 正文

基礎的WordPress插件制作教程

2024-04-25 20:43:30
字體:
來源:轉載
供稿:網友

插件制作準備工作

首先我們在/wp-content/plugins目錄下添加一個文件夾叫做”My-Mood”,在文件夾中添加一個叫做index.php的主文件,這個是插件的主文件,文件的開始需要一些命名的格式:如下面的代碼

<!--?php <br ?--> /*

Plugin Name: My Mood

Plugin URI: http://www.aips.me

Description: 一個心情發布插件

Version: 1.0

Author: 周良博客

Author URI: http://www.aips.me

License: GPL

*/

?>

Plugin Name 代表了插件的名字。

Plugin URI 代表的是插件的發布地址。

Description 代表的是關于這個插件的描述。

Version 代表了版本好,第一個版本使用1.0,如果你的插件有更新,就依次更改這個版本參數。

Author 代表插件作者的名字。

Author URI 代表作者的主頁。。

License 代表了插件的License,如果你是開源的就使用GPL,關于License的參數可以百度或者Google查詢,這里不再過多的篇幅敘述。

插件的初始化安裝

插件不僅僅是樣式的改變,通常我們會加入新的表,那么新加的表我就是通過插件的安裝函數來完成的,我們繼續在index.php中加入如下的代碼:

<!--?php <br ?--> //激活動作

register_activation_hook( __FILE__, 'my_mood_install');

function my_mood_install() {

// 啟用時要做的事情

global $wpdb;

$table_name = $wpdb->prefix . "mood";

$charset_collate = $wpdb->get_charset_collate();

$sql = "CREATE TABLE $table_name (

id mediumint(9) NOT NULL AUTO_INCREMENT,

createdon datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,

publishedon datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,

status int NOT NULL,

mood int NOT NULL,

text text NOT NULL,

address varchar(55) DEFAULT '' NOT NULL,

UNIQUE KEY id (id)

) $charset_collate;";

require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );

dbDelta( $sql );

}

?>

如上面代碼的注釋,我們通過register_activation_hook激活動作來完成插件的安裝,激活動作通過參數my_mood_install,找到名為my_mood_install的函數執行,這個動作會在插件激活的時候執行。

我們通過my_mood_install函數創建了一張名為”mood”的表,數據庫表的創建是通過Wordpress的dbDelta函數來執行sql語句完成的,要想使用此函數需要先引入wp-admin/includes/upgrade.php文件。

通過上面的代碼我們就運用Wordpress內置的方法創建了一張給mood插件存儲數據的表。

插件卸載

既然Wordpress有安裝也一定會有卸載。Wordpress插件的卸載方法是通過一個叫做uninstall.php的固定命名文件來執行的,在插件根目錄下建一個名叫uninstall.php的文件,代碼內容如下所示:

<!--?php <br ?--> //卸載動作

my_mood_uninstall();

function my_mood_uninstall() {

// 執行內容

global $wpdb;

$table_name = $wpdb->prefix . "mood";

$wpdb->query("DROP TABLE IF EXISTS " . $table_name);

}

?>

通過Wordpress的$wpdb->query來執行sql,刪除我們安裝時的創建的表,這樣就刪除一切與該插件相關的內容了。

給插件添加后臺管理菜單

如下面的代碼:

<!--?php <br ?--> //添加菜單

add_action( 'admin_menu', 'my_mood_create_menu' );

function my_mood_create_menu() {

global $my_settings;

$my_mood_settings=add_menu_page(

"My Mood",

"My Mood",

"manage_options",

"my-mood",

"test"

);

}

?>

通過上面的代碼我們就可以為插件添加一個菜單。方法通過add_action( ‘admin_menu', ‘my_mood_create_menu' )添加一個菜單而菜單具體的頁面則是通過參數來綁定的,如上面的方法是傳入了叫做”test”的參數,因此當點擊這個”My Mood”的菜單的時候就會去尋找叫做”test”的方法進行樣式的輸出,我們給出test方法

<!--?php <br ?--> function test(){

global $wpdb;

$table_name = $wpdb->prefix . "mood";

$fivesdrafts = $wpdb->get_results(

"

SELECT id, createdon, publishedon,status,mood,text,address

FROM $table_name

ORDER BY createdon DESC

"

);

?>

<div id="my-mood">foreach ( $fivesdrafts as $fivesdraft )

{

?> }

?>

<table class="widefat">

<thead>

<tr>

<th>發布內容</th>

<th>現在所在的</th>

<th>心情</th>

<th>創建日期</th>

<th>操作</th>

</tr>

</thead>

<tfoot>

<tr>

<th>發布內容</th>

<th>現在所在的</th>

<th>心情</th>

<th>創建日期</th>

<th>操作</th>

</tr>

</tfoot>

<tbody>

<tr>

<td><input name="text" type="text" value="" placeholder="輸入你的心情" /></td>

<td><input name="address" type="text" value="" placeholder="輸入現在所在地" /></td>

<td><label>高興:<input class="mood" checked="checked" name="mood" type="radio" value="0" /></label>

<label>一般:<input class="mood" name="mood" type="radio" value="1" /></label>

<label>悲傷:<input class="mood" name="mood" type="radio" value="2" /></label>

<label>憂慮:<input class="mood" name="mood" type="radio" value="3" /></label>

<label>其他:<input class="mood" name="mood" type="radio" value="4" /></label></td>

<td></td>

<td><a class="add">添加</a></td>

</tr>

<!--?php <br ?-->

<tr>

<td><input name="text" type="text" value="'<?php" />text; ?>'/></td>

<td><input name="address" type="text" value="'<?php" />address; ?>'/></td>

<td><label>高興:<input class="mood" name="mood<?php echo $fivesdraft->id; ?>" type="radio" />mood==0?'checked=checked':''; ?> value="0"></label>

<label>一般:<input class="mood" name="mood<?php echo $fivesdraft->id; ?>" type="radio" />mood=='1'?'checked=checked':''; ?> value="1"></label>

<label>悲傷:<input class="mood" name="mood<?php echo $fivesdraft->id; ?>" type="radio" />mood==2?'checked=checked':''; ?> value="2"></label>

<label>憂慮:<input class="mood" name="mood<?php echo $fivesdraft->id; ?>" type="radio" />mood==3?'checked=checked':''; ?> value="3"></label>

<label>其他:<input class="mood" name="mood<?php echo $fivesdraft->id; ?>" type="radio" />mood==4?'checked=checked':''; ?> value="4"></label></td>

<td></td>

<td><a class="edit">保存</a><a class="delete">刪除</a></td>

</tr>

<!--?php <br ?--></tbody>

</table>

</div>

<!--?php <br ?--> }

?>

test方法是php與html代碼混編的樣式,其中HTMl部分主要負責樣式的輸出,而PHP的代碼則是負責執行取數據的邏輯。主要從數據庫讀取數據的部分,通過Wordpress的$wpdb->get_results方法就可以從數據庫中取出我們第一步中創建的表中的數據,返回的是一個數據集合,包含了多條數據。最后通過foreach循環將數據輸出。

我們把數據的界面顯示出來了,那么怎樣才能將數據保存呢?同樣根據上一篇心情插件的例子,先看下面的代碼

<!--?php <br ?--> function aad_load_scripts($hook) {

global $my_settings;

if( $hook != $my_settings )

return;

/*載入ajax的js文件,也可以載入其他的javascript和/或css等*/

wp_enqueue_script('my-ajax', plugins_url( 'my-mood/js/index.js', __FILE ), array('jquery'));

wp_register_style( 'my-style', plugins_url( 'my-mood/css/style.css', __FILE ), array(), '', 'all' );

wp_enqueue_style( 'my-style' );

/*

創建驗證nonce

它會輸出類似于:

<![CDATA[

var aad_vars = {"aad_nonce":"5c18514d34"};

]]>

之類的被注釋掉的js到HTML。

*/

wp_localize_script('my-js', 'my_vars', array(

'my_nonce' => wp_create_nonce('aad-nonce')

)

);

}

add_action('admin_enqueue_scripts', 'aad_load_scripts');

?>

其中index.js的代碼如下

jQuery(document).ready(function(){

jQuery("input").blur(function(){

var value=jQuery(this).val();

jQuery.ajax({

type:"POST",

url:"/wp-admin/admin-ajax.php",

dataType: 'json',

data:{action:"say",value:value},

success:function(data){

}

});

})

jQuery(".add").click(function(){

var parent=jQuery(this).closest("tr");

var text=jQuery(parent).find("input[name='text']").val();

var address=jQuery(parent).find("input[name='address']").val();

var mood=jQuery(parent).find("input[type='radio']:checked").val();

jQuery.ajax({

type:"POST",

url:"/wp-admin/admin-ajax.php",

dataType: 'json',

data:{action:"add_mood",text:text,address:address,mood:mood},

success:function(data){

window.location.href=window.location;

}

});

})

jQuery(".delete").click(function(){

var parent=jQuery(this).closest("tr");

var id=jQuery(parent).attr('data');

jQuery.ajax({

type:"POST",

url:"/wp-admin/admin-ajax.php",

dataType: 'json',

data:{action:"delete_mood",id:id},

success:function(data){

window.location.href=window.location;

}

});

})

jQuery(".edit").click(function(){

var parent=jQuery(this).closest("tr");

var id=jQuery(parent).attr('data');

var text=jQuery(parent).find("input[name='text']").val();

var address=jQuery(parent).find("input[name='address']").val();

var mood=jQuery(parent).find("input[type='radio']:checked").val();

jQuery.ajax({

type:"POST",

url:"/wp-admin/admin-ajax.php",

dataType: 'json',

data:{action:"edit_mood",id:id,text:text,address:address,mood:mood},

success:function(data){

window.location.href=window.location;

}

});

})

});

在上面的代碼中我們通過Hook插入我們需要js代碼和css代碼,這樣我們插件的js和css就會因為插件的啟用而插入到頁面代碼中。

我們實現異步加載數據,要根據下面的代碼:

<!--?php <br ?--> function say(){

$return=array();

$return['success'] = '1';

$return['msg']=$_POST['value']."test-ajax";

echo json_encode($return);

die();

}

add_action('wp_ajax_say', 'say');

?>

這段代碼的意思是要使用ajax提交數據,add_action(‘wp_ajax_函數名',函數名)的格式就是注冊一個say路由,它對應的js代碼是

jQuery("input").blur(function(){

var value=jQuery(this).val();

jQuery.ajax({

type:"POST",

url:"/wp-admin/admin-ajax.php",

dataType: 'json',

data:{action:"say",value:value},

success:function(data){

}

});

})

因此可以看到js代碼的action為say

同樣的道理數據要進行添加,注冊一個add_mood的路由

<!--?php <br ?--> function add_mood(){

$text=$_POST['text'];

$address=$_POST['address'];

$mood=$_POST['mood'];

add($text,$address,$mood);

$return=array();

$return['success'] = '1';

echo json_encode($return);

die();

}

add_action('wp_ajax_add_mood', 'add_mood');

?>

數據要進行刪除,注冊一個delete_mood的路由

<!--?php <br ?--> function delete_mood(){

$id=$_POST['id'];

delete($id);

$return=array();

$return['success'] = '1';

echo json_encode($return);

die();

}

add_action('wp_ajax_delete_mood', 'delete_mood');

?>

數據要進行編輯,注冊一個edit_mood的路由

<!--?php <br ?--> function edit_mood(){

$id=$_POST['id'];

$text=$_POST['text'];

$address=$_POST['address'];

$mood=$_POST['mood'];

edit($id,$text,$address,$mood);

$return=array();

$return['success'] = '1';

echo json_encode($return);

die();

}

add_action('wp_ajax_edit_mood', 'edit_mood');

?>

對應上面增刪改的php函數如下所示

<!--?php <br ?--> function add($text,$address,$mood){

global $wpdb;

$table_name = $wpdb->prefix . "mood";

$wpdb->insert(

$table_name,

array(

'createdon' => current_time( 'mysql' ),

'publishedon' => current_time( 'mysql' ),

'status' => 1,

'mood' => $mood,

'text'=>$text,

'address'=>$address,

)

);

}

?>

<!--?php <br ?--> function delete($id){

global $wpdb;

$table_name = $wpdb->prefix . "mood";

$wpdb->delete(

$table_name,

array(

'id'=>$id

)

);

}

?>

<!--?php <br ?--> function edit($id,$text,$address,$mood){

global $wpdb;

$table_name = $wpdb->prefix . "mood";

$wpdb->update(

$table_name,

array(

'mood' => $mood,

'text'=>$text,

'address'=>$address,

),

array(

'id' => $id

)

);

}

?>

現在插件的后臺數據和界面都已經處理完了,那么怎樣把我們的心情插件在前臺引用呢?我們需要添加下面的代碼

<!--?php <br ?--> function mood_dispaly(){

global $wpdb;

$table_name = $wpdb->prefix . "mood";

$fivesdrafts = $wpdb->get_results(

"

SELECT text

FROM $table_name

ORDER BY createdon DESC

LIMIT 10

"

);

?>

<!--?php <br ?--> }

?>

這段代碼就把數據庫中存儲的心情數據通過HTML顯示在前臺,那么樣子哪里控制的呢?還記得第一步我們添加的js和css嗎,是的,樣式就是通過第一步插入的樣式來控制的。

到此一個完整的心情插件就完成了,照著例子你就可以制作一個屬于自己的心情插件了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
美日韩丰满少妇在线观看| 91高清视频在线免费观看| 日韩一区二区三区国产| 精品亚洲va在线va天堂资源站| 国产精品视频xxxx| 国产精品自在线| xvideos成人免费中文版| 91精品久久久久久| 欧美国产日本在线| 精品视频在线播放免| 97av在线播放| 色偷偷88888欧美精品久久久| 亚洲成人教育av| 国产专区欧美专区| 国内精品久久久久影院 日本资源| 国产精品久久网| 亚洲欧美国内爽妇网| 久久露脸国产精品| 57pao成人永久免费视频| 精品欧美aⅴ在线网站| 国产成人精品久久亚洲高清不卡| 精品久久久久久久久久国产| 日韩中文视频免费在线观看| 亚洲永久在线观看| 日本高清不卡在线| 日韩av高清不卡| 欧美激情一区二区三区高清视频| 亚洲欧洲中文天堂| 91tv亚洲精品香蕉国产一区7ujn| 国产精品白嫩初高中害羞小美女| 久久久久久久久久久成人| 亚洲qvod图片区电影| 欧美在线视频导航| 91香蕉嫩草影院入口| 久久精品国产一区二区电影| 国产精品久久久久免费a∨大胸| 亚洲成人激情在线观看| 亚洲人成啪啪网站| 亚洲高清色综合| 久久精品99无色码中文字幕| 国产在线精品播放| 欧美激情一级欧美精品| 国产精品pans私拍| 岛国av一区二区在线在线观看| 亚洲精品一区在线观看香蕉| 麻豆国产va免费精品高清在线| 亚洲一区二区黄| 国产精品一区二区久久国产| 国产成人一区二区三区| 国产精品999| 亚洲国产精品电影在线观看| 久久99热精品这里久久精品| 国产欧美日韩中文| 亚洲激情第一页| 91久久久久久久久久久| 91啪国产在线| 97**国产露脸精品国产| 黑人精品xxx一区一二区| 九色精品免费永久在线| 亚洲国产小视频在线观看| 九九热最新视频//这里只有精品| 亚洲天堂男人天堂女人天堂| 91中文字幕在线| 日韩精品中文字幕有码专区| 亚洲石原莉奈一区二区在线观看| 亚洲精品国产品国语在线| 亚洲人成网站999久久久综合| 国产九九精品视频| 日韩视频精品在线| 97国产在线观看| 日韩中文字幕在线精品| 亚洲欧美国产高清va在线播| 欧美成人合集magnet| 欧美成人午夜剧场免费观看| 欧美性xxxxhd| 福利微拍一区二区| 中文欧美日本在线资源| 亚洲成人精品久久| 欧美大片免费观看| 日韩在线视频免费观看| 精品露脸国产偷人在视频| 亚洲激情自拍图| 日韩美女在线看| 黑人巨大精品欧美一区二区| 亚洲男人7777| 色噜噜狠狠狠综合曰曰曰| 欧美人成在线视频| 久久精品欧美视频| 久久久之久亚州精品露出| 青草青草久热精品视频在线观看| 欧美高清第一页| 久久精品中文字幕一区| 成人乱人伦精品视频在线观看| 国产97在线亚洲| 久久青草精品视频免费观看| 国产亚洲精品久久久优势| 欧美成人免费播放| 久久精彩免费视频| 青青a在线精品免费观看| 国产精品福利在线观看网址| 欧美亚洲激情视频| 夜夜躁日日躁狠狠久久88av| 国产精品久久久久aaaa九色| 日韩女优人人人人射在线视频| 亚洲免费精彩视频| 久久久亚洲影院你懂的| 亚洲韩国日本中文字幕| 91在线免费观看网站| 久久久中文字幕| 最新69国产成人精品视频免费| 欧美另类高清videos| 日韩视频欧美视频| 富二代精品短视频| 欧美多人爱爱视频网站| 精品毛片三在线观看| 亚洲视频免费一区| 久久九九热免费视频| 久久成年人免费电影| 91免费看片在线| 国产日本欧美一区二区三区| 精品国产乱码久久久久久天美| 欧美性猛交丰臀xxxxx网站| 亚洲国产日韩欧美在线图片| 国产亚洲视频在线观看| 国产999精品久久久影片官网| 亚洲欧美精品伊人久久| 91av在线影院| 热久久99这里有精品| 精品国产欧美一区二区三区成人| 国产日韩在线视频| 不卡伊人av在线播放| 在线精品91av| 久久久国产一区二区三区| 成人av番号网| 久久伊人精品一区二区三区| 国产精品日韩欧美| 久久夜色精品国产| 欧美疯狂做受xxxx高潮| 欧美一级bbbbb性bbbb喷潮片| 日韩精品亚洲精品| 亚洲女同性videos| 国产精品久久久久久影视| 国产性猛交xxxx免费看久久| 91网站在线免费观看| 亚洲精品美女视频| 亚洲成人精品久久久| 欧美国产第二页| 97高清免费视频| 九九视频这里只有精品| 欧美www视频在线观看| 国产视频久久久久久久| 欧美成人h版在线观看| 国产在线精品播放| 亚洲国产精品久久久久秋霞蜜臀| 欧美在线欧美在线| 日韩美女福利视频| 日本sm极度另类视频| 亚洲精品丝袜日韩| 日韩www在线| 国产精品∨欧美精品v日韩精品| 91免费视频国产| 国产日韩欧美自拍| 狠狠躁夜夜躁人人爽超碰91| 日韩av在线资源|