插件制造预备工作
首先咱们在\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 */ ?>
插件的初始化装置
插件不只仅是款式的扭转,通常咱们会退出新的表,那么新加的表我就是经过插件的装置函数来实现的,咱们持续在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插件制作教程》的一些看法。更多内容请查看本栏目更多内容!
要害字形容:性能 标签 选项 设置 能够 文章 默许 Blog 这个 用户 上次课程咱们解说 Wordpress 用户的治理...
老鹰主机,是咱们站长应用较多的美国主机商之一。有些时分,咱们可能习气国际的一些主机商和管制面板的建站...
让主题支持小工具 WordPress 的小工具(widget)是一大特征,它让用户自在拖动组合内容,而且任何插件和主题...
首先从wordpress顺序index.php动手: 复制代码代码如下:define('WP_USE_THEMES', true); /** Loads the Wor...
WordPress网站在改换域名后,需求从新配置以后域名能力使得网站失常运转,很多人遇到过这样的状况,那么如何...
在wordpress模板制造进程中,有一些貌似复杂的成绩,其实只需确定了成绩呈现的地位,大少数都能够自行处理。...