插件SVN和更新API-如何识别插件?


11

对我来说一直以来还不清楚的一件事(尤其是因为我还没有将插件提交到存储库中)是如何生成插件的唯一“ ID”(子标签)的(即此列表)。

  1. 是在SVN提交时由作者还是由主持人选择?
  2. 是经过消毒的插件名称(标题)吗?
  3. plugin_basename吗?
  4. 它是主插件文件(没有目录名)吗?
  5. 还有吗

我很好奇插件的哪个属性将其链接到插件更新API 的SVN对应项(如果有)?

我问,部分出于本性,我想知道,但同时也要确保(在某种程度上)我自己的一次性插件不会与SVN中的插件冲突。

例如,如果只有3),我可以使用一个高度唯一的目录名,但是将我的插件名称(标题)保留为'n sweet。


注意:虽然似乎是“标准”文件命名约定[my-plugin-name]/[my-plugin-name].php,但我很喜欢[my-plugin-name]/plugin.php

它使我所有的插件都具有一定的一致性,很明显,它是“ bootloader”(主)文件,从小角度看,我讨厌目录名称的重复。

这是我问这个问题的另一个原因,因为4)会把我搞砸。另外,我也想听听您对这个“标准”的看法:)


Answers:


6

提交插件时,该段将成为已提交的经过清理的插件名称。此后,插件的“名称”可以更改,但该子弹永远保持不变。

当WordPress需要检查插件更新时,它将获取插件的所有标头信息和插件所在的目录名称,并将其发送到WordPress.org。

当前使用三个因素来尝试与目录中的插件进行匹配。请注意,我说的是“当前”,因为在我们尝试改进匹配算法时,这种变化每隔一段时间就会发生一次。

  1. 插件目录名称通常是插件的“ slug”。至少是从目录开始安装的。因此,我们使用该目录名检查段塞。这不是一个很好的指标,但有帮助。

  2. 由于插件目录中的名称必须唯一,因此也会搜索插件标题中的“名称”。如果在该确切名称上没有匹配项,则将对名称进行消毒以生成一个条,并且为了以防万一,我们也会搜索该条。这并不总是有效。

  3. 标头中的“插件URI”也要进行匹配检查。由于我们知道目录中所有插件的值,因此可以认为每个插件的值都是唯一的。因此,强烈建议插件作者输入指向他们控制的域的插件URI和该插件唯一的URL。

然后将所有这三个因素加权,并返回最高结果。这三个中的每一个所使用的权重反映了数据准确性的置信度。例如,“名称”的权重要比“ plugin-directory-as-slug”高,因为大多数作者并不经常更改“插件名称”,而如果用户手动安装插件目录,则“ plugin-directory”实际上可以是任何东西。

与这三个项目的匹配越接近,与插件匹配的可能性就越大。但是必须找到至少一个与之完全匹配的结果才能返回。

对于自定义的一次性插件,我倾向于在插件名称本身中使用站点名称。这也对组织有帮助。因此,我的一次性插件名称可能是“ ottopress.com-修复任何问题”。目录中的任何插件都不太可能匹配您的域。


太棒了!我认为我不会是唯一一个欣赏此答案的人;)
TheDeadMedic 2012年

2

由于SVN输入显然是在您首次提交插件之前创建的-它基于您的初始输入请求。我不知道过程是技术性的还是手工的,可能两者都有。

出于更新目的,提交了大量信息,并且存储库尝试确定匹配项-基于插件的名称,目录名称,当前版本以及可能的更多信息。我不知道是否曾经发布过确切的算法。


1
我回想起过去的@ otto42,它指示在此过程中将AuthorURI用作唯一令牌,因为尽管Plug slug可能会发生冲突,但Plug slug和AuthorURI的组合几乎永远不会发生。
Chip Bennett

欢呼声-很明显,这不仅仅是一个特定的属性。尽管如此,仍然有见识该算法。对我的文件命名约定有什么想法吗?
TheDeadMedic

通常,@ TheDeadMedic文件名并不重要,我也不认为单独使用它也足以使更新逻辑混乱。
拉斯特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.