详细的插件指南

提示:最后更新:2022 年 12 月 21 日

笔记:添加一个 Block Only 插件?请阅读区块特定指南

插件目录

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. 未经用户同意,插件不得跟踪用户。

为了保护用户隐私,未经_明确_授权同意,插件不得联系外部服务器。这通常是通过“选择加入”方法完成的,需要在插件设置中注册服务或复选框。有关如何收集和使用任何用户数据的文档应包含在插件的自述文件中,最好有明确说明的隐私政策。

禁止跟踪的一些示例包括:

  • 无需用户明确确认即可自动收集用户数据。
  • 故意误导用户提交信息作为使用插件本身的要求。
  • 卸载与服务无关的资产(包括图像和脚本)。
  • 未记录(或记录不详)的外部数据(例如黑名单)的使用。
  • 跟踪使用情况和/或观看次数的第三方广告机制。

此策略的一个例外是软件即服务,例如 Twitter、Amazon CDN 插件或 Akismet。通过安装、激活、注册和配置使用这些服务的插件,即表示同意这些系统。

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

允许从记录的服务外部加载代码,但是所有通信必须尽可能安全。不允许在不作为服务时在插件内执行外部代码,例如:

  • 从 WordPress.org 以外的服务器提供更新或以其他方式安装插件、主题或附加组件
  • 安装同一插件的高级版本
  • 出于字体包含以外的原因调用第三方 CDN;所有非服务相关的 JavaScript 和 CSS 必须包含在本地
  • 在服务使用条款未明确允许的情况下,使用第三方服务管理定期更新的数据列表
  • 使用 iframe 连接管理页面;应该使用 API 来最小化安全风险

_允许_与站点交互并将软件向下推送到站点的管理服务,前提是该服务在其自己的域上而不是在 WordPress 仪表板内处理交互。

9. 开发者及其插件不得做任何违法、不诚实或有违道德的事情。

虽然这是主观且相当广泛的,但其目的是防止插件、开发人员和公司滥用最终用户以及其他插件开发人员的自由和权利。

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

  • 通过关键字填充、黑帽 SEO 或其他方式人为操纵搜索结果
  • 提供为使用该插件的网站带来更多流量
  • 补偿、误导、施压、勒索或敲诈他人以获得评论或支持
  • 暗示用户必须付费才能解锁包含的功能
  • 创建帐户以生成虚假评论或支持票(即 sockpuppeting)
  • 使用其他开发者的插件并将其呈现为原创作品
  • 暗示插件可以创建、提供、自动化或保证法律合规性
  • 未经许可使用用户的服务器或资源,例如僵尸网络或加密挖掘的一部分
  • 违反WordPress.org 社区行为准则
  • 违反WordCamp 行为准则
  • 违反论坛准则
  • 针对 WordPress 社区任何其他成员的骚扰、威胁或虐待
  • 伪造个人信息以故意伪装身份并避免对先前违规行为的制裁
  • 故意试图利用指南中的漏洞

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 存储库是一个发布存储库,而不是开发存储库。所有提交、代码或自述文件都将触发与插件关联的 zip 文件的重新生成,因此只有准备好部署的代码(稳定版本、测试版或 RC)才应推送到 SVN。强烈建议在每次提交时包含描述性和信息性消息。频繁的“垃圾”提交消息,如“更新”或“清理”,使其他人很难跟踪更改。仅调整插件的次要方面(包括自述文件)的多个快速提交会对系统造成过度压力,并且可以被视为游戏最近更新列表。

一个例外是自述文件仅更新以表明支持最新版本的 WordPress。

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

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

16.提交时必须有完整的插件可用。

所有插件在批准之前都经过检查,这就是为什么需要 zip 文件的原因。名称不能“保留”以供将来使用或保护品牌(参见#17:尊重品牌)。已批准但未使用的插件的目录名称可能会提供给其他开发人员。

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

除非可以确认合法所有权/代表的证明,否则禁止使用商标或其他项目作为插件 slug 的唯一或初始术语。例如,WordPress 基金会已将术语“WordPress”注册为商标,在域名中使用“wordpress”属于违规行为。此政策适用于插件 slug,我们不允许 slug 以其他产品的术语开头。

例如,只有 Super Sandbox 的员工才能在“Super Sandbox Dancing Sloths”等语境中使用 slug“super-sandbox”或他们的品牌。非员工应该使用诸如“Dancing Sloths for Superbox”之类的格式,以避免可能误导用户相信该插件是由 Super Sandbox 开发的。同样,如果您不代表“MellowYellowSandbox.js”项目,则将其用作您的插件名称是不合适的。

建议使用原始品牌,因为它不仅有助于避免混淆,而且更容易让用户记住。

18. 我们保留尽我们所能维护插件目录的权利。

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

  • ……随时更新这些指南。
  • …从目录中禁用或删除任何插件,即使是出于指南未明确涵盖的原因。
  • …授予例外并让开发人员有时间解决问题,甚至是与安全相关的问题。
  • …删除开发人员对插件的访问权限,以代替新的、活跃的开发人员。
  • ……为了公共安全,在未经开发人员同意的情况下更改插件。

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