跳转到主要内容

详细的插件指南

最后更新时间:2022 年 12 月 21 日

笔记:添加仅阻止插件?请阅读区块特定指南

插件目录

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 或其他方式人为操纵搜索结果
  • 为使用该插件的网站带来更多流量
  • 补偿、误导、施压、勒索或勒索他人以获得评论或支持
  • 暗示用户必须付费才能解锁包含的功能
  • 创建帐户以生成虚假评论或支持票(即马甲)
  • 采用其他开发者的插件并将其作为原创作品呈现
  • 暗示插件可以创建、提供、自动化或保证法律合规性
  • 未经许可使用用户的服务器或资源,例如僵尸网络或加密货币挖矿的一部分
  • 违反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”属于违法行为。此政策适用于插件 slugs,我们不允许 slug 以其他产品的术语开头。

例如,只有 Super Sandbox 的员工才能使用“super-sandbox”一词,或者在“Super Sandbox Dancing Sloths”等上下文中使用他们的品牌。非员工应使用“Dancing Sloths for Superbox”等格式,以避免潜在误导用户相信该插件是由 Super Sandbox 开发的。同样,如果您不代表“MellowYellowSandbox.js”项目,则使用它作为插件的名称是不合适的。

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

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

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

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

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