使用OOP进行WordPress插件开发

时间:2010-10-29 08:54:47

标签: oop wordpress-plugin wordpress

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

我的网站需要有以下需求的播放器插件: -

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

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

我现在有两个难以完成这个插件的开发: -

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

如何进行以下操作(即使只进行一点知识共享)?

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

我搜索了谷歌,试图在互联网上找到一些关于这些的信息,但是我没有成功地使用OOP。

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

文章,比如“ gulbrandr ”提供的内容,很有帮助,我还要感谢“ kovshenin ”分享/提及某些OOP插件的链接;但如果可以提供更多的文章或任何代码片段,那将是非常好的,描述了开发OOP插件的正确步骤。

4 个答案:

答案 0 :(得分:10)

  

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

如何开始使用插件开发的步骤

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

第2步 - 创建插件的对象

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

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

完成代码

参考:Writing a WordPress Plugin Using Classes

答案 1 :(得分:7)

我不是大师,但我已经使用WordPress好几年了,背后有很多插件。你可以指出的第一个错误是

  

以及数据库表创建

这是错误的。使用WordPress时不会创建表,默认架构足够灵活,可以满足您的任何需求。甚至复杂的插件(如WP-eCommerce)也在被重写(或已经,不知道),以适应标准的WordPress架构。特别是因为WordPress 3.0已经出局了。今年早些时候在WordCamp提到了这一点。

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

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

之后您可以将其踢到W3 Total Cache,在那里您会看到一些令人印象深刻的内容和代码组织(感谢Frederick Townes)。

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

答案 2 :(得分:4)

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

希望得到这个帮助。

答案 3 :(得分:1)

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