最后更新:2024年3月15日是否要添加一个仅限块的插件?请阅读块特定指南。

插件目录

WordPress插件目录的目标是为所有WordPress用户提供一个安全的地方——无论是技术人员还是开发者——下载符合WordPress项目目标的插件。为此,我们希望为开发者提供一个简单透明的过程,以便他们可以提交插件。作为我们持续努力,使插件目录的入库流程更加透明的一部分,我们创建了一份开发者指南。我们致力于为所有开发者创造一个公平的环境。如果您对改进指南有任何建议或疑问,请发送电子邮件至plugins@wordpress.org,并告知我们。

开发者期望

所有开发者、具有提交权限的所有用户,以及所有官方支持某个插件的用户,都应遵守以下指南:违反规定可能导致插件或插件数据(对于之前批准的插件)从目录中删除,直到问题得到解决。用户评论和代码等插件数据可能无法恢复,具体取决于违规行为的性质以及对情况的同行评审结果。重复违规行为可能导致所有作者的插件被删除,并且开发者被禁止在WordPress.org上托管插件。插件开发者有责任确保其在WordPress.org上的联系信息是最新的和准确的,以便他们可以收到来自插件团队的所有通知。不允许使用自动回复或将电子邮件路由到支持系统,因为这会阻碍人工及时处理电子邮件。目录中的所有代码都应尽可能安全。插件开发者的最终责任是确保代码的安全,插件目录会尽最大努力执行此要求。如果发现插件存在安全问题,它将被关闭,直到问题得到解决。在极端情况下,WordPress安全团队可能会更新插件,以确保公众的安全。虽然我们尝试涵盖尽可能多的相关指南解释,但我们无法保证每个情况都会被明确涵盖。如果您不确定某个插件是否违反了指南,请联系plugins@wordpress.org并咨询。

指南

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

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

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

插件开发者有责任确保插件中的所有文件都符合指南。故意编写代码来规避指南,或者恢复被要求删除的代码,是禁止的(参见第9条:非法/不诚实行为)。在上传到SVN之前,开发者必须确认所有包含文件的许可证,从原始源代码到图像和库。此外,他们必须遵守所有第三方服务和API的使用条款。如果无法验证某个库或API的使用条款,则不得使用。

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

WordPress.org分发的插件版本,只有目录中的版本。虽然人们可能在其他地方开发代码,但用户将从目录下载,而不是从开发环境下载。通过其他方式分发代码,但同时不保持在此目录中的代码更新,可能会导致插件被删除。

4. 代码必须(主要)是人类可读的。

使用类似于p,a,c,k,e,r的混淆功能、uglify的混淆或不清晰的命名约定(例如$z12sdf813d)的技术或系统来隐藏代码,在目录中是不允许的。使代码难以阅读会给未来的开发者带来不必要的障碍,并且也是隐藏恶意代码的常见途径。我们要求开发者公开提供其源代码以及任何构建工具,可以通过以下方式之一:
  • 在部署的插件中包含源代码
  • 在readme文件中提供指向开发位置的链接
我们强烈建议您记录如何使用任何开发工具。

5. 试用版软件不允许。

插件不得包含受限或锁定的功能,这些功能只能通过付费或升级才能使用。禁止在试用期结束后或达到配额后禁用功能。此外,提供仅允许访问API和服务试用版或测试版的插件也不允许。允许在服务中提供付费功能(参见第6条:服务软件),前提是插件中的所有代码都完全可用。我们建议使用托管在WordPress.org之外的附加插件,以排除高级代码。将插件设计为仅供开发人员使用的工具的情况,将根据具体情况进行审查。试图向用户推销临时产品和功能是可以接受的,前提是符合第11条(滥用管理界面)的规定。

6. 软件即服务是允许的。

充当外部第三方服务接口的插件(例如视频托管网站)是允许的,即使是付费服务。该服务本身必须提供实质性的功能,并在提交到插件目录的readme文件中进行明确说明,最好提供指向该服务的服务条款的链接。不允许的服务和功能包括:
  • 一个存在的唯一目的是验证许可证或密钥的服务,而插件的所有功能都包含在本地,这种服务是不允许的。
  • 通过将任意代码从插件中移动到外部,从而虚假地使其看起来提供了附加功能的做法,是禁止的。
  • 不属于服务的 storefront。仅充当从外部系统购买产品的前端的插件,将不被接受。

7. 插件不得在未经用户同意的情况下跟踪用户。

为了保护用户隐私,插件不得在未经明确授权的情况下联系外部服务器。这通常通过“选择加入”方法实现,要求用户注册服务或在插件设置中选择复选框。插件的readme文件应包含有关如何收集和使用任何用户数据的文档,最好明确说明隐私政策。以下是一些禁止的跟踪示例:
  • 在未经用户明确确认的情况下自动收集用户数据。
  • 故意误导用户,让他们认为提交信息是使用插件的必要条件。
  • 卸载与服务无关的资产(包括图像和脚本)。
  • 未经文档记录(或记录不充分)使用外部数据(例如黑名单)。
  • 跟踪使用情况和/或浏览量的第三方广告机制。
此策略的例外情况是软件即服务,例如Twitter、Amazon CDN插件或Akismet。通过安装、激活、注册和配置使用这些服务的插件,即授予使用这些系统进行数据收集的许可。

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

允许从已记录的服务中加载代码,但所有通信必须尽可能安全。在不作为服务的情况下,在插件中执行外部代码是不允许的,例如:
  • 从WordPress.org服务器以外的服务器安装更新或其他插件、主题或插件。
  • 安装相同插件的高级版本。
  • 使用第三方CDN的原因仅限于字体包含;所有与服务无关的JavaScript和CSS必须包含在本地。
  • 使用第三方服务来管理定期更新的数据列表,除非在服务的服务条款中明确允许。
  • 使用iframe连接管理页面;应使用API来尽量减少安全风险。
与站点交互并向其推送软件的管理服务是允许的,前提是该服务在自己的域内处理交互,而不是在WordPress仪表板中。

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

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

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

    通过关键词堆砌、黑帽SEO或其他方式人为操纵搜索结果
  • 承诺为使用插件的网站带来更多流量
  • 为了获得评论或支持,向他人提供报酬、误导、施压、敲诈或勒索
  • 暗示用户必须付费才能解锁插件的某些功能
  • 创建账户以生成虚假评论或支持请求(即水军行为)
  • 窃取其他开发者的插件,并将其冒充为自己的原创作品
  • 暗示插件可以创建、提供、自动化或保证法律合规性
  • 未经许可,利用用户的服务器或资源,例如作为僵尸网络的一部分或进行加密货币挖矿
  • 违反WordPress.org 社区行为准则
  • 违反WordCamp 行为准则
  • 违反论坛指南
  • 针对 WordPress 社区的任何其他成员进行骚扰、威胁或侮辱
  • 伪造个人信息,以故意隐藏身份,并逃避之前违规行为的处罚
  • 故意尝试利用指南中的漏洞

10. 插件不得在公共网站上嵌入外部链接或署名信息,除非明确获得用户的许可。

插件代码中包含的所有“由...提供”或署名信息,以及链接都必须是可选的,并且默认情况下不显示在用户的网站上。用户必须通过明确且易于理解的选择,才能选择显示任何署名信息和链接,而这些选项不应隐藏在使用条款或文档中。插件不得要求显示署名信息或链接才能正常运行。

服务提供商可以在其输出中进行品牌宣传,但前提是代码必须在服务端处理,而不是在插件中。

11. 插件不应劫持管理后台。

用户希望并且期望插件能够融入 WordPress 的整体体验。不断出现令人分心的提示和大量不必要的警报会破坏这种体验。

升级提示、通知、警报等都应限制在特定范围内,并且应谨慎使用,无论是基于上下文还是仅在插件的设置页面显示。全站的通知或嵌入在后台中的小工具必须可以被用户关闭或在问题解决后自动关闭。错误消息和警报必须包含如何解决问题的说明,并在问题解决后自动消失。

在 WordPress 后台中的广告应该尽量避免,因为它们通常效果不佳。用户通常只有在尝试解决问题时才会访问设置页面。使插件更难使用通常不会获得好的评价,因此我们建议限制在插件中放置的任何广告。请记住:通过这些广告跟踪推荐流量是不允许的(请参阅第 7 条规定),并且大多数第三方系统不允许在后端放置广告。滥用广告系统可能会导致开发者被报告给相关方。

开发者可以并且鼓励在插件中包含指向其自身网站或社交网络的链接,以及在本地(插件内部)包含图像以增强用户体验。

12. WordPress.org 上的公共页面(readme 文件)不得包含垃圾信息。

公共页面,包括 readme 文件和翻译文件,不得用于发送垃圾信息。垃圾信息行为包括但不限于:不必要的联盟链接、指向竞争插件的链接、使用超过 5 个标签、黑帽 SEO 和关键词堆砌。

指向直接需要的产品的链接,例如插件所需的其他插件或主题,可以在审核通过的情况下添加。类似地,可以用于标签的内容可以是相关产品,但不能是竞争产品。如果插件是 WooCommerce 的扩展程序,它可以添加 “woocommerce” 标签。但是,如果插件是 Akismet 的替代品,则不能使用该术语作为标签。重复使用标签或特定术语被视为关键词堆砌,并且是不允许的。

Readme 文件应该写给人类,而不是给机器人。

在所有情况下,联盟链接必须进行披露,并且必须直接链接到联盟服务,而不是重定向或隐藏的 URL。

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

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

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

14. 插件的频繁代码提交应避免。

SVN 仓库是发布仓库,而不是开发仓库。所有提交,无论是代码文件还是 readme 文件,都会触发与插件相关联的 ZIP 文件的重新生成,因此只有准备好发布的代码(无论是稳定版本、测试版还是 RC)才应推送到 SVN。强烈建议为每个提交添加描述性且信息丰富的消息。频繁的“垃圾”提交消息,例如“更新”或“清理”,会使其他人难以跟踪更改。多次快速提交,仅对插件的某些小部分(包括 readme 文件)进行修改,会给系统带来不必要的负担,并且可能被视为为了在“最近更新”列表中获得更高的排名而采取的手段。

一个例外是,当 readme 文件仅用于指示支持最新版本的 WordPress。

15. 插件的版本号必须在每次新发布时递增。

只有当插件版本号增加时,用户才会收到有关更新的通知。readme.txt 文件必须始终反映插件的当前版本。有关标签的更多信息,请阅读我们的 关于使用 SVN 进行标签的指南以及 关于 readme.txt 文件的使用方法。

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

所有插件都会在批准之前进行检查,这就是为什么需要 ZIP 文件。名称不能“预留”以供将来使用或用于保护品牌(请参阅第 17 条:尊重品牌)。已批准插件的目录名称,如果未使用,可以分配给其他开发者。

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

使用商标或其他项目作为插件 slug 的唯一或初始术语是被禁止的,除非可以确认具有合法的所有权/授权。例如,WordPress 基金会拥有“WordPress”一词的商标,在域名中使用“wordpress”是一种侵权行为。此政策适用于插件 slug,我们不会允许 slug 以其他产品的术语开头。

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

推荐使用原创品牌,这不仅有助于避免混淆,而且更易于用户记住。

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

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

    ...随时更新这些准则。
  • ...即使是出于未明确由准则涵盖的原因,也可以禁用或从目录中删除任何插件。
  • ...可以允许开发者在解决问题时获得一定的宽限期,即使是与安全相关的问题。
  • ...可以在没有开发者同意的情况下,为了公共安全,对插件进行修改。
  • ...可以更换开发者,如果插件没有活跃的开发者。

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