填写您的邮件地址,订阅我们的精彩内容:

wordpress插件制作入门:以实现管理员对作者的通知为实例

753

今天突然发现,乌徒帮还没有一篇专门介绍wordpress插件制作入门的文章,于是补上。我们不去谈论wordpress插件的好处与不足,我们只希望通过插件实现我们的功能。本文就以实现一个后台管理员通知为实例,让管理员可以通知站内所有的作者本站发生着的变化,以此为契机,谈谈wordpress插件制作的入门。

让我们打开wordpress插件目录下随系统自带的一个插件:hello.php。这个插件将会在管理后台打印一首歌的歌词。让我们跟随这个插件,试着写一个自己的插件。

第1步:为这个插件命名和声明

在创建一个php文件之后,在它的开头使用注释为这个插件命名,如下:

/**
Plugin Name: 管理员通知作者
Plugin URI: http://www.utubon.com/336/
Description: 这个插件实现管理员在wordpress后台写一个通告,其他作者一旦进入后台,就能看到管理员的通告
Author: 否子戈
Version: 1.0
Author URI: http://www.utubon.com/
*/

我们需要告诉wordpress,我们的插件叫什么名字,并告诉wordpress这个插件的一些信息。上面这段注释即是对插件信息的声明,plugin name:插件的名称;plugin URI:插件下载地址,当然也可以是你自己的网站;description:对插件进行描述,告诉使用者它的功能;author:插件的开发者是谁;version:插件的版本号,它肯定会升级的;author URI:作者的地址,你的网站可以填进去啦。

第2步:你的插件要实现什么功能?怎么实现?

我们的这个插件要做的是这样的一件事:我以管理员的身份登录wordpress后台,在后台首页的一个作者公告框中填写公告;其他的作者以自己的身份登录wordpress后台之后,会在顶部发现管理员的公告通知。

第3步:为wordpress管理员添加一个公告框

我们添加一个函数,来让管理员登录后台之后会有一个公告框,他可以在公告框内填写公告,并保存到数据库。

function add_band_box(){
	if(!current_user_can(edit_dashboard))return;//判断当前的用户是不是管理员http://codex.wordpress.org/Function_Reference/current_user_can不是的话,就不会显示这个box
	if(isset($post['notice_message']))update_option('notice_message',$post['notice_message']);
	//这里就简单写了,如果提交了新的公告,利用update_option将公告保存到数据库中
?>
<form method="post">
<textarea style="word-break:break-all;width:80%;" rows="4" name="notice_message"><?php echo stripslashes(get_option('notice_message')); ?></textarea>
<input name="submit_notice_message" type="submit" value="提交" />
</form>
<?php
}
function my_wp_dashboard_setup() {
	wp_add_dashboard_widget( 'add_band_box', __( '作者公告' ), 'add_band_box' );
}
add_action('wp_dashboard_setup', 'my_wp_dashboard_setup');

我们只要利用上面的这些代码,就可以在管理员后台页面的首页出现一个名称为“作者公告”的挂件。管理员可以在里面的文本框填写内容,并提交保存到数据库。

不过,上面的这段代码问题重重,既没有check_admin_referer验证,也没有做更多的程序判断,设计也不美观。不过我们的目的是练习,不是使用。在代码中function my_wp_dashboard_setup和add_action部分我们会在下文重复用到,我们会在function my_wp_dashboard_setup中增加wp_add_dashboard_widget以增加挂件。

第四步:在非管理员的页面,我们将通告公布出来

我们要让除了管理员之外的其他wordpress作者都看到管理员的通知,我们做下面的代码操作。

function show_band(){
	if(current_user_can(edit_dashboard))return;//管理员是看不到的
	echo '<div id="show_band" style="position:absolute;top:30px;right:200px;background:yellow;">'.stripslashes(get_option('notice_message')).'</div>';
}
add_action( 'admin_notices', 'show_band' );

OK好了,多么简单的一件事啊,通过add_action( 'admin_notices', 'show_band' );就让这些通告出现在了管理后台。

下载这个插件

总结

wordpress插件制作和主题实现后台功能有什么不同?1、程序所放置的地方不同;2、插件文件开头有插件信息声明;3、主题后台功能只针对这个主题,插件可以在更换主题之后仍然有效。因此,我们完全可以像开发一个wordpress主题后台功能一样去开发一个插件。

wordpress的插件机制是wordpress在进行程序执行时,浏览插件目录,如果插件已经被激活,就挂载该插件,因此这个过程会占用wordpress的速度和服务器资源。

我们在插件中,可以用is_plugin_active('my_plugin.php')来判断插件是否激活。在主题功能开发时,需要下面的代码

if(!function_exists('is_plugin_active'))include_once(ABSPATH.'wp-admin/includes/plugin.php');

我们可以将插件分为多个文件,并包含一些图片等素材,放在一个文件夹下。有插件声明的文件就是插件的主文件,wordpress系统将加载它,is_plugin_active则需要带上这个插件所在的目录,如is_plugin_active('my_plugin/my_plugin.php')

如果你已经会wordpress主题开发,插件制作是不是很简单了呢?

下面我简单说几句