内容


用 Eclipse PDT 开发一个 WordPress 插件

用 Eclipse 工具扩展 WordPress

Comments

Eclipse PDT V2.0 项目是最近才发布的。与先前的版本相比,它增加了一些新的可用性特性,包括添加构建路径、打开类型和访问改进了的代码帮助的功能。

本文将演示如何下载并安装 WordPress 以及如何用 Eclipse PDT 构建插件。另外还演示了如何从 Eclipse 导出插件以便共享。

要想更好地学习本文,需要安装以下工具:

  • PHP V4.3 或更新的版本
  • MySQL V4.0 或更新的版本
  • 带 PDT 的 Eclipse V3.4

WordPress 概述

WordPress 是用 PHP 编写的一个发布平台,借助它,可以快速便捷地向 Web 发布内容。它具有高度的可扩展性,可以在这个平台上创建出具有任意功能的插件。自 2005 年来,有上百万的 WordPress 拷贝被大公司及个人下载并使用。

WordPress 很容易安装和配置,并且要求很少:只需 PHP 和 MySQL。要安装 WordPress,只需从 Web 站点下载 ZIP 文件(参见 参考资料),然后将 ZIP 解压缩到可从 Web 服务器访问到的一个目录下即可。本文中,我们采用的这个 Web 服务器已被配置成允许向该 Web 服务器发布此用户目录(类似 Apache 中的 userdir 模块)。如果愿意,可以重命名这个目录:这里,我将名称从 wordpress 改为了 blog

在完成解压缩和重命名目录后,请遵照 “Famous 5-Minute Install” 的指导(参见 参考资料)进行操作。如果您的 ISP 支持 WordPress 的需求,那么您就可以在本地开发,然后将整个目录 FTP 到您的站点。

扩展 WordPress

很多人都习惯使用 WordPress 撰写博客,但是实际上它可以用来轻松发布任何内容。我接触过很多用 WordPress 作为主要引擎来托管产品信息类站点的网站,这些站点往往还包括有论坛、反馈表及首页上的 Adobe® Flash® 动画。

针对 WordPress,有很多插件可用(参见 参考资料)。这些插件的范围很广,从添加定制字段来收集更多关于该 WordPress 站点注册用户信息的功能,到标记云(tag clouds)、反垃圾邮件实用程序,再到能生成指向诸如 Facebook、MySpace、del.icio.us 和 Technorati 这类流行站点的 “Share this” 链接的联系插件。

但即使有了这些插件,还是会出现需要通过扩展 WordPress 来满足具体需要的情况。本文后面的部分将展示如何用 Eclipse 和 PDT 建立一个可以在其中开发并测试 WordPress 插件的开发环境。

建立自已的工作区

在建立工作区之前,请确认已经安装并运行了 WordPress。此外,还需要对 WordPress 目录有读写的访问权。最好的情况是在您自己的机器上使用在 Web 服务器上已经配置了的用户目录,以便能将文件放入您自己的根目录下。但一个共享的目录也是可以的,只要您可以对它进行读写操作。

在继续进行前,先在 WordPress_home/wp-content/plugins 目录(其中,WordPress_home 是 WordPress 解压缩后所处的那个目录的完整路径)内创建一个目录 — 例如, WordPress home/wp-content/plugins/myplugin。之后,新 WordPress 插件都将被存放在这个目录之下。

如果已经安装并运行了 WordPress,并且可以对刚刚为插件创建的这个目录进行读写,那么就可以着手为 WordPress 插件创建一个新项目了:

  1. 选择 File > Project,然后从 Wizards 列表中选择 PHP Project ,如图 1 所示。
    图 1. 创建新的 PHP 项目
    创建新的 PHP 项目
    创建新的 PHP 项目
  2. 单击 Next
  3. New PHP Project 窗口中,在 Project name 框中键入插件的名称。
  4. Contents 下,选择 Create project from existing source。接下来浏览或在 Directory 框中键入刚刚创建的目录的名称(例如,我的目录是 /Users/ngood/Sites/blog/wp-content/plugins/myplugin),如图 2 所示。
    图 2. 定义项目的位置
    定义项目的位置
    定义项目的位置
  5. 输入目录信息后,单击 Finish,其他信息均保留默认值。

创建项目后,WordPress_home/wp-content/plugins/myplugin 目录的目录列表应类似清单 1。

清单 1. 新 myplugin 目录的内容
drwxr-xr-x  7 user  user    238 Feb  3 11:02 .
drwxr-xr-x@ 5 user  user    170 Feb  3 08:39 ..
-rw-r--r--  1 user  user    259 Feb  3 11:10 .buildpath
-rw-r--r--  1 user  user  30244 Feb  3 11:02 .pmd
-rw-r--r--  1 user  user    496 Feb  3 08:39 .project
drwxr-xr-x  3 user  user    102 Feb  3 08:39 .settings
-rw-r--r--  1 user  user    795 Feb  3 11:13 myplugin.php

在一个团队环境中工作

假如您正在一个团队环境中工作并在共享您的代码,那么 Eclipse 工具会负责将文件从正确的目录登记到源代码控制存储库内。然而,请留意文件在其中被从团队共享环境导入到您的工作区的这个目录。当从一个源代码控制存储库导出文件并导入到您的工作区时,您可以定义这些文件的存储位置(参见图 3)。要获得更多关于 Eclipse 与源代码存储库如何联合使用的信息,请参见 参考资料

图 3. 显示在 WordPress 管理员面板内的插件
显示在 WordPress 管理员面板内的插件
显示在 WordPress 管理员面板内的插件

向构建路径中添加 WordPress

PDT 项目提供了向构建路径添加文件夹的功能,它同时也使代码完成工具能够用于 WordPress。为了查看在代码完成工具中的 add_filteradd_action 函数,可以修改构建路径以添加 WordPress wp-includes 目录。

要想将 WordPress wp-includes 目录添加到构建路径,在 PHP 项目被突出显示的同时选择 Project > Properties 。在 Libraries 选项卡上,单击 Add External Source Folder,然后浏览到在安装 WordPress 的位置中找到的这个 wp-includes 目录。完成后,单击 OK。现在,可以在 PHP 编辑器中键入 add_ 并调用代码完成功能,之后将看到一个包括 add_actionadd_filter 的列表。

添加第一个插件文件

要添加第一个插件文件,可以选择 File > New > PHP File。第一个文件的名称要与此文件所在目录的名称一样。例如,如果插件目录的名称是 myplugin,那么此文件就应该命名为 myplugin.php。WordPress 会读取该文件以获得插件信息并注册扩展点。

为了使 WordPress 能够识别插件,需要向新的插件文件中粘贴一个注释块。如果创建的 WordPress 插件很多,不妨考虑把这个代码块放入 PHP 的代码模板中。清单 2 就是一个完成了的代码块。

清单 2. 能识别插件的注释块
/*
Plugin Name: My Plugin
Plugin URI: http://www.example.com/myplugin
Description: This is a really great plugin that extends WordPress.
Version: 1.0.0
Author: Nathan A. Good
Author URI: http://www.nathanagood.com
*/

此时,该插件不做任何事情。它将被显示在 WordPress 的插件管理区内,不过只有这个注释块。要查看这个新插件,请用管理员身份登录到 WordPress 实例,然后单击 Plugins。应该会看到这个新插件被列在 Inactive Plugins 的下面。

图 4. 在从源代码控制存储库导入时定义源位置
在从源代码控制存储库导入时定义源位置
在从源代码控制存储库导入时定义源位置

添加功能性

本文中,我将添加两种功能。第一个功能很简单,就是让博客条目标题全部大写。这是一个添加过滤器 的示例。第二个功能是在用户注册表的末尾添加一个额外字段。这是一个添加动作 的示例。

下面我要用函数性代码编写这两个示例以使其尽可能地简单。记住:若使用的是 PHP V5 或更新的版本,就可以融入面向对象的概念以使代码更易于读懂和维护。有关如何用面向对象编程的概念和设计模式编写更易于维护的 PHP 的详细信息,请参见 参考资料

大写的标题

清单 3 所示的是标题过滤器的代码。其中,使用了 PHP 中的 strtoupper() 函数以使此博客的标题变为大写。

清单 3. 使标题变成大写的函数
/**
 * Capitalizes the title given by $title.
 */
function capitalizeTitle($title) {
    return strtoupper($title);
}

写完这个函数后,需要调用 add_filter 以在 WordPress 中将此函数注册为特定的过滤器扩展点。参考资料 中提供了所有可用过滤器的清单的一个链接。下面是一个添加过滤器的示例。

清单 4. 用 add_filter 添加过滤器
/* now add the filter */
add_filter('the_title', 'capitalizeTitle');

添加注册字段

清单 5 所示的代码可以生成一个新的定制注册字段。我用这个 Firebug 扩展来查看现有注册表单字段的 CSS(Cascading Style Sheet)样式,以确保我的定制字段具有相同的 CSS 样式类。

清单 5. 新的定制字段动作
/**
 * Adds a custom field that prompts the user for their favorite
 * color.
 * @return void
 */
function drawCustomField() {
    echo '<p><label>Favorite Color:<br />';
    echo '<input autocomplete="off" class="input" name="fav_color" ';
    echo ' id="fav_color" size="25"';
    echo ' value="' . $_POST['fav_color'] . '" type="text" tabindex="32" />';
    echo '</label><br /></p>';
}

要添加这个定制动作,可以使用如下代码。

清单 6. 用 add_action 添加动作
/* now add the action */
add_action('register_form', 'drawCustomField');

这个动作只在表单上绘出此字段。当用户提交此表单时,它并不实际保存数据。要想保存数据,需要使用 profile_update 动作。有关所有可用操作的详细列表及各自的功能,请参看 参考资料

测试插件

在项目内放入代码后,就可以开始测试插件了。在测试前,需要在 WordPress 内启用插件。以管理员身份登录到 WordPress,然后单击 Plugins。找到插件,然后单击 Activate

激活插件后,进入博客的首页。应该可以看到 “Hello World!” 示例标题现在全部都是大写字母了。如果禁用该插件,那么它将还原回普通的大小写的情况。利用这个功能还可以做一些其他的事情,比如将标题中的 URL 转为超链接。此外,也可以添加具有同样名称的多个过滤器,所以与其创建一个功能全面的过滤器,不如考虑创建多个小的、功能集中的功能块并将它们连接在一起。

要测试插件的注册字段部分,必须以管理用户身份登录到 WordPress 并启用允许用户在 Settings 页面注册的特性。启用这个选项后,在进入到这个注册页面时,就会看到 Favorite Color 字段。

WordPress 的其他扩展点

除了添加过滤器和动作外,还可以覆盖 WordPress 内的函数。覆盖的函数均在 WordPress 主目录中的 pluggable.php 文件内定义。wp_mail 是其中的一个例子,可用来为用户发送电子邮件。很多可覆盖的函数都会处理用户授权,比如登录、设置 cookie 以及发送不同事件的通知。通过覆盖基于授权的函数,就可以构建一些插件,而这些插件能为 WordPress 提供另一种身份验证和授权方式,比如针对一个企业用户组织的身份验证。

导出插件

在编写和仔细测试了插件之后,有可能还会想要与他人共享。大多数 WordPress 插件与 WordPress 本身一样,都只打包成一个 ZIP 文件,这个文件可被扩展和复制到 WordPress 插件目录。

可以用 Eclipse 导出这些插件文件。通过 Eclipse 将项目导出到一个 ZIP 归档文件,就可以避免同时发送特定于项目的文件和团队共享目录及文件(比如 .svn 或 Concurrent Version Systems(CVS)目录)。

要将插件导出到一个归档文件,可以先选中 PHP 项目,然后选择 File > Export。在 Select 窗口,从目标列表中选择 Archive File,然后单击 Next

图 5. 导出 WordPress 插件
导出 WordPress 插件
导出 WordPress 插件

在如图 6 所示的 Archive file 窗口中,单击 Deselect All,然后单击想要包括到归档文件(比如 myplugin.php)的那些 PHP 文件。在选择了这些 PHP 文件后,可以从 To archive file 选择此归档文件的位置,然后单击 Finish 创建此文件。为了保持一致性,最好是让此 ZIP 文件的名称与此插件目录以及主要插件文件的名称相同。

图 6. 选择要导出的文件
选择要导出的文件
选择要导出的文件

从 Eclipse 创建了归档文件后,就可将其发布到一个 Web 服务器上或是将其复制到您的 ISP 处以便您可以使用它。

要在官方 WordPress 站点上添加有关此插件的信息,可以参考 参考资料 并遵照那里的指导信息。

结束语

WordPress 是越来越流行的一个可扩展 Web 应用程序,它让您能够轻松地将内容发布给用户。您无需修改任何 WordPress 代码就可以扩展 WordPress,从而提供更多的功能。

借助安装了 PDT 的 Eclipse IDE,可以使用 PHP 工具构建一个插件。您还可以用 WordPress 测试和运行您的插件,直到它全部完成。之后,您可以使用 Eclipse 的导出功能来将此插件导出到一个适合于分发的归档文件。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Open source
ArticleID=383787
ArticleTitle=用 Eclipse PDT 开发一个 WordPress 插件
publish-date=04202009