以下代码根据插件精简所得,通过代码行间的简单注释,可以作为开发WordPress插件的一个查考。类中所有方法的名称不受WordPress约束,均为自行所命之名。

/*
Plugin Name: ShuiFou
Plugin URI: http://www.chibl.com/shuifou
Description: 睡否?
Version: 0.3
Author: Miracle
Author URI: http://www.chibl.com
License: GPLv2
*/

if(!class_exists('ShuiFou')) :
    class ShuiFou {
        var $id;
        var $name;
        var $version;
        var $options;

        //构造方法,可在此初始化插件常量
        function ShuiFou() {
            $this->id = 'com.chibl.shuifou';
            $this->name = 'ShuiFou';
            $this->version = '0.3';
        }

        //插件的入口方法,类实例化后将调用此方法
        function init() {
            $this->options = get_option($this->id);

            //如果当前访问的是后台管理页面
            if(is_admin()) {
                //在WordPress后台添加插件管理菜单
                add_action('admin_menu', array(&$this,'menu'));
            } else {
                //根据需要设置钩子
                add_action('init', array(&$this, 'action'));
                add_action('wp_head', array(&$this, 'display'));
            }

            //添加小工具
            add_action('widgets_init', array(&$this, 'widget'));
        }

        //在后台管理 设置 栏添加名为 ShuiFou 的菜单,链向插件配置页
        function menu() {
            add_options_page($this->id, $this->name, 'manage_options', __FILE__, array(&$this, 'config'));
        }

        //插件配置页内容
        function config() {
        }

        //爱干嘛干嘛
        function action() {
        }

        //访问指定ID的页面时,修改页面内容
        function display() {
            if(is_page($this->options['pageid'])) {
                add_filter('the_content', array(&$this,'page'));
            }
        }

        function page($content) {
            $content .= '追加内容……';
            return $content;
        }

        //注册小工具
        function widget() {
            include_once 'widget.php';
            register_widget('ShuiFouWidget');
        }

        //安装插件时将执行此方法,可在此创建或更新插件所需持久化的数据
        function install() {
        }

        //删除插件时将执行此方法,可在此删除安装插件时所创建的数据表及数据
        function uninstall() {
        }

    }
endif;

if(class_exists('ShuiFou')) {
    $sf = new ShuiFou(); //实例化
    register_activation_hook(__FILE__, array(&$sf, 'install')); //指定安装插件时所要执行的方法
    register_deactivation_hook(__FILE__, array(&$sf, 'uninstall')); //指定删除插件时所要执行的方法
    $sf->init();
}

寒林

www.3code.cn 专注WordPress企业主题