【问题标题】:WordPress plugin development using OOP使用 OOP 开发 WordPress 插件
【发布时间】:2011-05-02 07:29:26
【问题描述】:

我是插件开发的新手。所以请纠正我,无论我哪里错了。

我有一个网站,它需要一个具有以下需求的播放器插件:-

  • 用于玩家注册的管理员可控表单,其中包含一些详细信息。
  • 将显示所有注册玩家的列表页面。
  • 已注册的玩家可以删除并相互比较。
  • 在前端的 WordPress 主题中显示一些注册玩家(10 个随机玩家)。

我已经完成了插件的激活,以及该插件的数据库表创建和管理员菜单选项。我也完成了播放器注册界面,但是没有数据库插入代码。 但所有这些都是使用正常的程序方式完成的。

我现在完成这个插件的开发有两个头疼的问题:-

  • 以 OOP 格式开发此插件,以支持未来版本的 WordPress。
  • 完成此插件的其他要求。

如何进行以下(即使有一点知识分享)?

  • 使用 OOP 方式从头开始创建 WordPress 插件。
  • 使用 OOP 调用网络表单(例如,用于玩家注册)。
  • 使用 OOP 将所有这些玩家信息提交到数据库中。
  • 使用 OOP 显示列表页面(例如,注册玩家和定位他们)。
  • 在 WordPress 主题的前端显示一些播放器,使用模板标签或直接借助插件。

我已经搜索了谷歌,试图在互联网上找到一些关于这些的信息,但是我在 OOP 的事情上没有取得太大的成功。

编辑:- 对我们所有人(WordPress OOP 插件开发新手)来说,有一些代码 sn-p 突出显示它的使用将非常有帮助和好处。如果可能,您还可以提供一些文章链接,这些链接将正确描述如何编写此类 OOP 插件。

文章,比如“gulbrandr”提供的,很有帮助,我还要感谢“kovshenin”分享/提及一些OOP插件的链接;但如果能提供更多文章或任何代码sn-p,描述开发OOP插件的正确步骤,那就太好了。

【问题讨论】:

  • 难道没有人在使用 OOP 功能的 WordPress 插件开发方面做得很好吗?

标签: oop wordpress


【解决方案1】:

我经常下载插件来查看代码,希望能从开发人员的方法和编码风格中学到一些东西。我经常发现自己在阅读编写不佳的插件时感到沮丧。并不是说他们是糟糕的开发人员,他们只是没有足够专注于替代编码风格和改进他们如何去编程他们的插件。以下是关于我如何编写 WordPress 插件以影响其他开发人员的快速分步说明。

插件开发入门步骤

第 1 步 - 创建您的文件并将其称为插件

第 2 步 - 创建插件的对象

第 3 步 - 添加您的操作和过滤器

第 4 步 - 为您的插件添加设置/选项

完成你的代码

参考:Writing a WordPress Plugin Using Classes

【讨论】:

  • 您能否提供更多信息(例如,在创建/编辑管理表单时,在使用新的自定义表在数据库中插入/更新数据时,在为新表提供类别视图支持时如何进行?插件等),除了提供的链接?因为该链接只提到了使用 OOP 进行插件开发的一部分,而不是我正在谈论的复杂性。请尝试理解我的要求。 如果需要,我会再次选择赏金选项,但我非常需要一些好的答案。感谢大家的贡献。
【解决方案2】:

我不是专家,但我已经使用 WordPress 工作了好几年,并且在我背后有不少插件。我可以指出的第一个错误是

随着数据库表的创建

这是错误的。使用 WordPress 时无需创建表,默认模式足够灵活,可以满足您的任何想法。甚至像 WP-eCommerce 这样的复杂插件也正在被重写(或者已经不知道)以适应标准的 WordPress 模式。特别是因为 WordPress 3.0 已经发布。今年早些时候,WordCamp 已经提到了这一点。

您可以轻松地将您的玩家放入用户表中。他们的属性可以存储在用户元表中,另外你可以给他们特殊的角色和/或特权。

现在,如果您真的喜欢 OOP,您应该下载一些很酷的插件并通读代码,看看其他人是如何做到的。作为一个例子,我可以提到我自己的一个名为 Twitter Friendly Links 的插件 - 它不是最好的 OOP,但它绝对是一个开始 ;)

之后你可以把它转到W3 Total Cache,在那里你会看到一些非常令人印象深刻的东西和代码组织(感谢Frederick Townes)。

此外,Codex 的某些部分现在以 OOP 样式显示示例 - 例如 Widget API。我希望很快能看到更多,并为 WordPress 中的 OOP 欢呼!人们提出这样的问题是一件好事,这是核心开发人员的动力:)

【讨论】:

  • 感谢您提供此信息和链接。我一定会调查的。此外,我将永远记住您关于仅使用 WordPress 数据库模式的观点。再次感谢。
  • 你不应该说“你创建”表。我有一个邮件队列插件,它使用一个自定义表作为队列,标准 WP 模式用于其他所有内容。对我所有的邮件队列数据使用wp_post_meta 至少过于复杂,并且引入了我不愿承担的风险,尤其是wp_postwp_post_meta 之间过于复杂的连接查询。所以我创建一个表。
  • '你不创建表'是非常错误的。 Wordpress 表格会随着时间的推移而变得臃肿,因为几乎所有插件都使用 wordpress 表格结构来存储其数据,从而导致大型网站或保留大数据的网站出现问题。如果您使用 wordpress 表并且某个特定站点有大量由其他插件或 wordpress 本身存储在其中的数据,即使您的插件使用很少的数据库存储,您的查询也会受到影响。这甚至在进入高级插件可能需要的复杂连接之前。
  • 不创建表是不正确的。有时,您需要以一种不适合可用 WP 对象(帖子、postmeta 等)的方式存储,更重要的是查询数据。 BuddyPress 创建表格,这是一个 Automattic 插件。
【解决方案3】:

我发现了一篇关于如何编写面向对象的 WordPress 插件的最新帖子(2010 年 8 月):http://w3prodigy.com/behind-wordpress/object-oriented-wordpress-plugin/

希望对您有所帮助。

【讨论】:

    【解决方案4】:

    尝试使用 WP 的内置自定义帖子类型和自定义字段/分类 API。如果这对您的任务来说还不够——您可以尝试添加一些 ORM,比如后端的 Doctrine。 最近,我开发了一个简单的框架,它提供了一些核心功能来为 WP 添加 MVC 方法(基本请求路由、html 生成 api 和基于 wordpress 帖子和自定义字段的“模型”)。它并不完美 - 但我可以分享代码,可能会对你有所帮助。

    【讨论】:

    • 不是我想要的,因为我打算使用现有的 WordPress 功能和 API。但我喜欢你的观点是你对 MVC 结构与 WordPress 以及 Doctrine 合并的实验。真的很棒 - +1
    • 我提供的是我们为支持日常开发而开发的 WP API 扩展 :) 如果您正在寻找一种构建插件代码的好方法 - 请注意 gulbrandr 的回答。他引用的文章非常棒,描述了一种非常好的“每个函数一个类”方法,可以让你的代码保持干净。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    • 1970-01-01
    • 1970-01-01
    • 2016-11-17
    相关资源
    最近更新 更多