上一期主要是讲解制作wordpress收藏分享插件的准备工作,今天这一篇的教程将讲解,如何构建wordpress插件的主文件,也就是wp-share-list.php。(wp-share-list这款插件请到第一篇文章内下载。)

wp-share-list.php
书写插件描述
插件描述需要遵循wordpress插件开发规范,大致的结构如下:
- /*
- Plugin Name: wp-share-list
- Plugin URI: http://www.36ria.com/2217
- Description: 在文章末尾生成一个文章分享站点列表
- Version: 1.0
- Author: 明河共影
- Author URI: http://www.36ria.com/
- */
很通俗易懂,明河就不解释了,保存后,你点击wordpress后台的插件,这时候就会发现这个新的插件,如下图:

启动这个插件。
ShareList.php
打开示例wp-share-list的主文件后,大家可以发现,代码很少,不像很多插件大部分的代码都集中在主文件,明河将插件所有的操作都封装成了一个类,放在include/ShareList.php。为什么要使用类,而不采用传统的函数式的编程呢?
原因有三:
- 类可以起到命名空间的作用,防止插件的函数名与其他插件冲突。
- 简化函数命名,很多插件为了防止冲突,给函数加个个长前缀,出现wp_XX_XX_XX等过长的形式。
- 让代码更加的简洁易懂,使主文件不再臃肿。
基本的类结构如下:
- if ( ! class_exists ( " ShareList" )) {
- class ShareList{
- function ShareList() {
- }
- }
- }
- ?>
这个类我们先留空,等下一期教程再深入探讨。
实例化这个类
- include("include/ShareList.php");
- //实例化类
- if(class_exists("ShareList")){
- $SL = new ShareList();
- }
现在来介绍wordpress插件中很重要基础知识.
Actions
什么是Action?
有用过ROR或者php框架CI的朋友会更容易理解,其实Action可以理解为钩子,即wordpress提供的接口,利用这些接口,我们可以在wordpress运行特定php方法时,触发自定义的方法。
举个例子:
我们需要向头部添加新的css和js,代码如下:
- add_action("wp_head",array (&$SL, 'addHeader' ));
add_action()这个方法有四个参数分别是钩子名、自定义函数名、优先级(可选)、其他参数(可选)
这里解释下,为什么自定义函数名为array (&$SL, ‘addHeader’ )。
$SL这个变量是ShareList的实例,这里我们要调用ShareList中的addHeader这个方法,如果直接写add_action(“wp_head”,”$this->addHeader”);明显是错误的,所以我们需要获取这个实例的引用,跟函数名组成数组让add_action自行拼接处理。
如何移除Action?
remove_action(‘action_hook’,'action_function’)
主文件的全部Action
- if(isset($SL)){
- add_action("wp_head",array (&$SL, 'addHeader' ));
- add_action('the_content', array (&$SL, 'addContent' ));
- add_action ('wp-share-list/wp-share-list.php ' , array (&$SL , 'init' )) ;
- add_action('admin_menu','add_share_list_options_page');
- }
有四个Action,明河解释下它们分别的作用:
- 向模板头部添加插件需要的css和js
- 向the_content,即生成文章正文后,添加js调用,生成分享列表
- 初始化配置参数
- 向wordpress后台添加管理页面
来看add_share_list_options_page这个函数
- //生成管理页面
- if(!function_exists('add_share_list_options_page')){
- function add_share_list_options_page(){
- global $SL;
- if(!isset($SL)){
- return ;
- }
- if(function_exists('add_options_page')){
- add_options_page('wp-share-list','收藏分享列表',9,basename ( __FILE__ ),array (&$SL, 'printAdminPage' ));
- }
- }
- }
留意add_options_page这个方法,这个函数会向后台添加插件配置项,有四个参数插件名、菜单项名、优先级、文件名、自定义生成页面函数。
这一期教程到此结束,有什么问题,可以给明河留言,下一期教程将深入讲解ShareList这个类。

如何移除Action?
remove_action(‘action_hook’,’action_function’)
对应的如果移除刚才加的这个add_action(“wp_head”,array (&$SL, ‘addHeader’ ));
是不是可以这样写remove_action(“wp_head”,array (&$SL, ‘addHeader’ ));
如何移除Action?
remove_action(‘action_hook’,’action_function’)
对应删除 这个add_action(“wp_head”,array (&$SL, ‘addHeader’ ));
是不是可以这样写remove_action(“wp_head”,array (&$SL, ‘addHeader’ ));
另外对于add_action()的第二个参数,自定义函数名,有些不解,这个是wp里的需要这样定义才这样写吧
恩,写法正确。第二个参数就是你要执行的方法名,比如array (&$SL, ‘addHeader’ ),就是执行$SL-> addHeader()
先看看你推荐的那本书我再来看你的教程
您好,这个插件很喜欢,只是我想问一下怎么才能设置显示位置呢?我不想显示在文章尾部,我想自定义,改代码也行,能请教一下吗?谢谢。
你好, ShunYea ,请访问http://www.36ria.com/2672,文章中我有做了说明。如果你还有疑问,可以继续给我留言。
@明河共影, 非常感谢这位大哥,我没认真看,继续研究中!
您好明河..
现在我要开发个插件..
主体部分已经写好,但是后台添加菜单那几项不会..
能否出个更详细点的教程?
谢谢?或者能否留个QQ号,指导我一下..谢谢.
mail: me[at]jauia.com
呵呵,可以看下《插件开发全攻略》:http://www.36ria.com/2460,里面有讲到如何处理后台配置,实际上就是添加个钩子。