最近在研究WordPress的内部机制以及主题和插件的开发,下面将介绍如何开发出一个wordpress的插件,主要是介绍开发步骤,插件的功能不重要。当然,我在维护一个叫WP-Options-Manager的插件,主要管理的是用户WordPress后台的设置对应的数据表wp_options,基本功能维护的差不多了,有机会会提交到WordPress官方,也会发一篇文章,大家拭目以待。
开发插件准备工作
一般来说,都是在 wp-content\plugins 目录下建立一个文件夹,文件夹名就是插件的名称,我们插件名字为”Test Plugin”,那么就建一个test-plungin的文件夹,然后建一个test_plugin.php文件就可以了。
当然,这只是必须的文件,如果要提交到wordpress官方还需要readme.txt和预览图片等等,这些在此就不多说了。
插件开发头部信息
一个插件开发最重要的是头部信息,只有这些WordPress才能识别一个插件。头部信息的格式为:
<?php
/*
Plugin Name: 插件名
Plugin URI: 插件的介绍或更新地址
Description: 插件描述
Version: 插件版本,例如 1.0
Author: 插件作者名称
Author URI: 插件作者的链接
*/
?>
其中各个信息的顺序没有要求,例子:
<?php
/**
* Plugin Name: Test Plugin
* Plugin URI: http://blog.shadowwu.club
* Description: Perhaps this is the best plugin in WordPress
* Version: 1.0.0
* Author: 影梧
* Author URI: http://blog.shadowwu.club
*/
?>
可以看到这已经是一个插件的模样了,不过这个插件什么作用也没有。
插件功能
此插件的功能就是点击设置的时候弹出一个消息,并且可以设置弹出的消息内容。
全部代码为:
<?php
/**
* Plugin Name: Test Plugin
* Plugin URI: http://blog.shadowwu.club
* Description: Perhaps this is the best plugin in WordPress
* Version: 1.0.0
* Author: 影梧
* Author URI: http://blog.shadowwu.club
*/
/* 注册激活插件时要调用的函数 */
register_activation_hook( __FILE__, 'display_test_install');
/* 注册停用插件时要调用的函数 */
register_deactivation_hook( __FILE__, 'display_test_remove' );
function display_test_install() {
/* 在数据库的 wp_options 表中添加一条记录,第二个参数为默认值 */
add_option("display_test_text", "这是影梧的Test插件", '', 'yes');
}
function display_test_remove() {
/* 删除 wp_options 表中的对应记录 */
delete_option('display_test_text');
}
if( is_admin() ) {
/* 利用 admin_menu 钩子,添加菜单 */
add_action('admin_menu', 'display_test_menu');
}
function display_test_menu() {
/* add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function); */
/* 页名称,菜单名称,访问级别,菜单别名,点击该菜单时的回调函数(用以显示设置页面) */
add_options_page('Set Test Plugin', 'Test Plugin Setting', 'administrator','display_test', 'display_test_html_page');
}
function display_test_html_page() {
?>
<?php display_test(); ?>
<div>
<h2>Set Test Plugin</h2>
<form method="post" action="options.php">
<?php /* 下面这行代码用来保存表单中内容到数据库 */ ?>
<?php wp_nonce_field('update-options'); ?>
<p>
<textarea
name="display_test_text"
id="display_test_text"
cols="40"
rows="6"><?php echo get_option('display_test_text'); ?></textarea>
</p>
<p>
<input type="hidden" name="action" value="update" />
<input type="hidden" name="page_options" value="display_test_text" />
<input type="submit" value="Save" class="button-primary" />
</p>
</form>
</div>
<?php
}
function display_test() {
echo "<script>alert('".get_option("display_test_text")."');</script>";
}
?>
效果图
给插件添加设置链接或者其他链接
可以看到插件就一个停用的链接,虽然设置页面有,但需要到菜单seetings下去找,为了方便用户,故添加一个设置链接。
在代码最后添加一下代码即可
add_filter( 'plugin_action_links_' . plugin_basename(__FILE__), 'add_test_links' );
function add_test_links ( $links ) {
$mylinks = array(
'<a href="' . admin_url( 'options-general.php?page=display_test' ) . '">设置</a>',
);
return array_merge( $links, $mylinks );
}
闲言碎语
以上就是一个插进开发的基本流程,故不是很难,本篇没有解释代码中的方法含义,基本在WordPress官方能查到,而且我也写了不少注释,在此就不多做解释了。