WordPress 插件开发手册

title: "详细插件指南" post_status: publish comment_status: open taxonomy: category: - developer-plugins-handbook post_tag: - Detailed Plugin Guidelines - Wordpress Org - Repos


详细插件指南

[info]仅添加区块插件?请阅读区块特定指南。[/info]

插件目录

WordPress 插件目录旨在为所有 WordPress 用户——从非技术人员到开发者——提供一个安全的环境,下载符合 WordPress 项目目标的插件。

为此,我们希望确保开发者向目录提交插件的流程简单透明。作为我们持续努力使插件目录收录过程更加透明的一部分,我们制定了一份开发者指南。我们致力于为所有开发者创造一个公平的竞争环境。

如果您有改进指南的建议或相关问题,请发送邮件至 plugins@wordpress.org 告知我们。

开发者期望

所有拥有提交权限的开发者、所有官方支持插件的用户都应遵守以下准则:

违规行为可能导致插件或插件数据(针对已批准的插件)从目录中移除,直至问题解决。根据违规性质及同行评审结果,用户评价和代码等插件数据可能无法恢复。重复违规可能导致作者所有插件被移除,并被禁止在 WordPress.org 托管插件。

插件开发者有责任确保其在 WordPress.org 的联系信息准确且及时更新,以便接收插件团队的所有通知。自动回复和转至支持系统的邮件不被允许,因其历来会阻碍人工及时处理邮件。

目录中的所有代码应尽可能确保安全。安全是插件开发者的最终责任,插件目录将尽力执行此要求。若发现插件存在安全问题,将被关闭直至问题解决。极端情况下,WordPress 安全团队可能为保护公众安全而更新插件并传播。

尽管我们尽可能考虑准则的各种相关解释,但期望涵盖所有具体情况是不合理的。若不确定插件是否违反准则,请联系 plugins@wordpress.org 咨询。

准则

1. 插件必须兼容 GNU 通用公共许可证

虽然任何 GPL 兼容许可证均可接受,但强烈建议使用与 WordPress 相同的许可证——“GPLv2 或更高版本”。所有代码、数据和图像——即存储在 WordPress.org 托管的插件目录中的任何内容——都必须遵守 GPL 或 GPL 兼容许可证。包含的第三方库、代码、图像或其他内容也必须兼容。有关兼容许可证的具体列表,请阅读 gnu.org 上的 GPL 兼容许可证列表

2. 开发者需对其插件的内容和行为负责

插件开发者有责任确保其插件内的所有文件符合规范。禁止故意编写代码规避规范,或恢复被要求删除的代码(参见第9条非法/不诚实行为)。

开发者在提交至SVN前,需确认所有包含文件的许可协议——从原始源代码到图像和库文件。此外,他们必须遵守其插件使用的所有第三方服务和API的使用条款。若无法验证库的许可协议或API的条款,则不得使用。

3. 插件必须在其 WordPress 插件目录页面提供稳定版本

WordPress.org 分发的唯一插件版本是目录中的版本。尽管开发者可能在别处编写代码,但用户将从目录下载,而非开发环境。

通过其他方式分发代码,却不保持此处托管的代码更新,可能导致插件被移除。

4. 代码必须(基本)具备可读性

目录中不允许使用类似 p,a,c,k,e,r 混淆功能、uglify 的 mangle 或诸如 $z12sdf813d 等不清晰的命名约定等技术或系统来隐藏代码以使其晦涩难懂。使代码不具备可读性会迫使未来的开发者面对不必要的障碍,同时也是隐藏恶意代码的常见载体。

我们要求开发者通过以下方式之一,公开且持续地提供对其源代码和任何构建工具的访问:

我们强烈建议您记录任何开发工具的使用方法。

5. 禁止试用软件

插件不得包含仅通过付费或升级才能解锁的受限或锁定功能。在试用期结束或达到配额后,功能不得被禁用。此外,仅提供沙盒访问 API 和服务的插件也属于试用或测试插件,同样不被允许。

服务中的付费功能是允许的(参见指南 6:服务软件),前提是插件内的所有代码完全可用。我们建议使用托管在 WordPress.org 之外的附加插件,以排除高级代码。仅作为开发者工具的插件将根据具体情况审查。

在指南 11(劫持管理体验)的范围内,尝试向用户推销临时产品和功能是可以接受的。

6. 允许软件即服务

允许作为某些外部第三方服务(例如视频托管网站)接口的插件,即使是付费服务也可接受。该服务本身必须提供实质性功能,并在随插件提交的自述文件中明确说明,最好附上服务使用条款的链接。

不允许的服务和功能包括:

7. 未经用户同意,插件不得追踪用户

为保护用户隐私,插件不得在未经用户明确授权的情况下联系外部服务器。通常通过“选择加入”方式实现,例如要求用户注册服务或在插件设置中勾选复选框。插件应在 readme 文件中说明如何收集和使用用户数据,最好附上明确的隐私政策。

禁止的追踪行为示例包括:

此政策的例外情况是软件即服务,例如 Twitter、Amazon CDN 插件或 Akismet。通过安装、激活、注册和配置使用这些服务的插件,即视为授予这些系统使用权限。

8. 插件不得通过第三方系统发送可执行代码

允许从有文档记录的服务外部加载代码,但所有通信必须尽可能安全。不允许在插件中执行外部代码(除非作为服务运行),例如:

允许与网站交互并推送软件的管理服务,前提是该服务在其自身域内处理交互,而非在 WordPress 仪表盘中。

9. 开发者及其插件不得从事任何非法、不诚实或道德上令人反感的行为

尽管这一条款具有主观性且范围较广,但其目的在于防止插件、开发者和公司滥用最终用户及其他插件开发者的自由与权利。

这包括(但不限于)以下示例:

10. 未经用户明确许可,插件不得在公开网站上嵌入外部链接或署名信息

插件代码中包含的所有“Powered By”或署名显示及链接必须为可选,且默认在用户面向公众的网站上 显示。用户必须通过清晰明确、易于理解的选择来主动启用显示任何及所有署名和链接,这些选项不应隐藏在服务条款或文档中。插件不得以显示署名或链接作为其正常运行的前提条件。服务 允许 按照其认为合适的方式对其输出进行品牌标识,前提是相关代码在服务端而非插件中处理。

11. 插件不应劫持管理仪表盘

用户更偏好并期望插件能融入 WordPress 的整体体验。持续不断的打扰和用不必要的提醒淹没管理仪表盘会破坏这种体验。

升级提示、通知、警报等必须限制范围并谨慎使用,无论是根据上下文还是仅在插件的设置页面。全站通知或内嵌的仪表盘小工具必须可关闭或在解决后自动消失。错误信息和警报必须包含如何解决问题的说明,并在完成后自行移除。

应避免在 WordPress 仪表盘中投放广告,因为这通常效果不佳。用户通常只在尝试解决问题时才会访问设置页面。让插件更难使用通常不会带来好评,我们建议限制其中放置的任何广告。请记住:通过此类广告进行推荐跟踪是不允许的(参见准则 7),且大多数第三方系统不允许后端广告。滥用广告系统的准则将导致开发者被向上游举报。

我们欢迎并鼓励开发者包含指向自己网站或社交网络的链接,以及在插件本地包含图像以增强体验。

12. WordPress.org 的公开页面(自述文件)不得包含垃圾信息

公开页面(包括自述文件和翻译文件)不得用于发布垃圾信息。垃圾信息行为包括(但不限于)不必要的联盟链接、竞争对手插件标签、使用超过 12 个标签、黑帽 SEO 和关键词堆砌。

允许适度包含指向直接必需产品(如插件使用所需的主题或其他插件)的链接。同样,相关产品可用于标签,但竞争对手产品不可。如果插件是 WooCommerce 扩展,可以使用 'woocommerce' 标签。但如果插件是 Akismet 的替代品,则不能使用该术语作为标签。重复使用标签或特定术语被视为关键词堆砌,是不允许的。

自述文件是为人而非机器人编写的。

在所有情况下,联盟链接必须明确披露,并且必须直接链接到联盟服务,而非重定向或隐藏 URL。

13. 插件必须使用 WordPress 的默认库

WordPress 包含许多有用的库,例如 jQuery、Atom Lib、SimplePie、PHPMailer、PHPass 等。出于安全性和稳定性考虑,插件不得在其自身代码中包含这些库。相反,插件必须使用 WordPress 打包的库版本。

有关 WordPress 中包含的所有 JavaScript 库的列表,请参阅 WordPress 默认包含并注册的脚本

14. 应避免对插件进行频繁提交

SVN 仓库是发布仓库,而非开发仓库。所有提交(无论是代码还是 readme 文件)都会触发插件关联 zip 文件的重新生成,因此只有准备好部署的代码(无论是稳定版、测试版还是候选版)才应推送到 SVN。强烈建议每次提交都附带描述性强的信息性消息。频繁的“垃圾”提交消息(如“更新”或“清理”)会使他人难以跟踪变更。多次快速连续提交仅调整插件的微小方面(包括 readme),会给系统带来不必要的负担,并可能被视为操纵“最近更新”列表的行为。

唯一的例外是,当 readme 文件的更新仅用于表明支持最新版本的 WordPress 时。

15. 每个新版本必须增加插件版本号

只有当插件版本号增加时,用户才会收到更新提醒。主干 readme.txt 文件必须始终反映插件的当前版本。有关标记的更多信息,请阅读我们的 SVN 标记说明readme.txt 工作原理

16. 提交时必须提供完整的插件

所有插件在审核通过前均需接受检查,因此必须提供压缩文件。名称不能为未来使用或品牌保护而"预留"(参见第17条:尊重品牌)。已批准但未使用的插件目录名称可能会分配给其他开发者。

17. 插件必须尊重商标、版权和项目名称

禁止将商标或其他项目名称作为插件标识符的唯一或起始部分,除非能提供合法所有权/代理权的证明。例如,WordPress基金会已注册商标"WordPress",在域名中使用"wordpress"属于侵权行为。此政策同样适用于插件标识符,我们不允许标识符以其他产品名称开头。

例如,仅Super Sandbox的员工应使用"super-sandbox"作为标识符,或在"Super Sandbox Dancing Sloths"这类语境中使用其品牌。非员工应采用"Dancing Sloths for Superbox"等格式,以避免可能误导用户认为该插件由Super Sandbox开发。同样,如果您不代表"MellowYellowSandbox.js"项目,则不应将其用作您的插件名称。

建议使用原创品牌,这不仅能避免混淆,也更容易被用户记住。

18. 我们保留尽最大努力维护插件目录的权利

我们的目标是以尽可能公平的方式执行这些准则。我们这样做是为了确保插件的整体质量及其用户的安全。为此,我们保留以下权利:

作为回报,我们承诺将审慎使用这些权利,并尽可能尊重最终用户和开发者。