根底的WordPress插件制造教程

插件制造预备工作

首先咱们在\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
"
);
?>
<p 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>
</p>
<!--?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吗,是的,款式就是经过**步拔出的款式来管制的。

到此一个完好的心境插件就实现了,照着例子你就能够制造一个属于本人的心境插件了。

以上就是安达网络工作室关于《基础的WordPress插件制作教程》的一些看法。更多内容请查看本栏目更多内容!

本文相关话题: WordPress 插件 PHP编程
版权声明:本文为 安达网络工作室 转载文章,如有侵权请联系我们及时删除。
相关文章
如何将WordPress博客订阅到QQ邮箱详细该怎样操作

1、登录QQ邮箱,点击右下角&ldquo;浏览空间&rdquo;,进入浏览空间。 2、进入浏览空间后,点击页面右上角&ld...

修正WordPress中文章编辑器的款式的办法详解

自定义文章编辑器的款式 每一个 WordPress 主题的文章款式都是不一样的,然而在应用后盾的可视化编辑器编辑...

WordPress直达义HTML与过滤链接的相干PHP函数应用解析

esc_html()(本义 Html) esc_html() 函数用来本义 Html 代码,让 Html 代码不本义。 用法 esc_html( $tex...

WordPress 3.0 十大看点 CMS性能进一步加强

1. 自定义用户名和明码 新版本一开端就会给用户惊喜! 目前咱们装置WordPress之后,零碎会给咱们一个用户ad...

疾速把握WordPress中加载JavaScript脚本的办法

在 WordPress 中加载脚本(为 CSS 和 JS,下同)文件,大少数人的做法是间接在 header.php 文件中增加 link...

如何制造WordPress主题言语包(汉化主题)

通过这次yHtml5主题的制造,我学会了怎样给主题制造言语包,就是普通的汉化主题啦。废话不多说,说步骤。 首...

需求提交

客服服务