基础的WordPress插件制作教程
插件制作准备工作首先我们在wp-contentplugins目录下添加一个文件夹叫做”My-Mood”,在文件夹中添加一个叫做index.php的主文件,这个是插件的主文件,文件的开始需要一些命名的格式:如下面的代码
插件的初始化安装插件不仅仅是样式的改变,通常我们会加入新的表,那么新加的表我就是通过插件的安装函数来完成的,我们继续在index.php中加入如下的代码: function my_mood_install() {// 启用时要做的事情 $table_name = $wpdb->prefix . "mood"; $charset_collate = $wpdb->get_charset_collate(); $sql = "CREATE TABLE $table_name ( require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); 如上面代码的注释,我们通过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的文件,代码内容如下所示: function my_mood_uninstall() {// 执行内容 通过Wordpress的$wpdb->query来执行sql,删除我们安装时的创建的表,这样就删除一切与该插件相关的内容了。 给插件添加后台管理菜单如下面的代码: 通过上面的代码我们就可以为插件添加一个菜单。方法通过add_action( ‘admin_menu',‘my_mood_create_menu' )添加一个菜单而菜单具体的页面则是通过参数来绑定的,如上面的方法是传入了叫做”test”的参数,因此当点击这个”My Mood”的菜单的时候就会去寻找叫做”test”的方法进行样式的输出,我们给出test方法 prefix . "mood";$fivesdrafts = $wpdb->get_results( 现在所在的 |
心情 |
创建日期 |
操作 |
现在所在的 |
心情 |
创建日期 |
操作 |
|
test方法是php与html代码混编的样式,其中HTMl部分主要负责样式的输出,而PHP的代码则是负责执行取数据的逻辑。主要从数据库读取数据的部分,通过Wordpress的$wpdb->get_results方法就可以从数据库中取出我们第一步中创建的表中的数据,返回的是一个数据集合,包含了多条数据。最后通过foreach循环将数据输出。
我们把数据的界面显示出来了,那么怎样才能将数据保存呢?同样根据上一篇心情插件的例子,先看下面的代码
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的代码如下
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",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",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",data:{action:"edit_mood",id:id,success:function(data){
window.location.href=window.location;
}
});
})
});
在上面的代码中我们通过Hook插入我们需要js代码和css代码,这样我们插件的js和css就会因为插件的启用而插入到页面代码中。 我们实现异步加载数据,要根据下面的代码:
(编辑:安卓应用网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!