SVN de plug-in e API de atualização - como os plug-ins são identificados?

11

Uma coisa que nunca ficou clara para mim (especialmente porque eu não enviei um plug-in para o repositório) é como o "ID" (slug) único de um plug-in é gerado (ou seja, esta lista ).

  1. É uma escolha do autor no momento da submissão do SVN ou de um moderador?
  2. É o nome do plug-in higienizado (título)?
  3. É o plugin_basename?
  4. É o principal arquivo de plug-in (sem o nome do diretório)?
  5. Algo mais?

Estou curioso para saber quais atributos de um plug-in vinculá-lo ao seu equivalente SVN (se houver) para a API de atualização de plug-ins?

Eu pergunto, em parte fora da minha natureza, querer saber, mas também como garantir (até certo ponto) que meus próprios plug-ins únicos não colidam com um no SVN.

Por exemplo, se fosse apenas 3) , eu poderia usar um nome de diretório altamente exclusivo, mas manter o nome do meu plugin (título) curto e agradável.


NB Embora a convenção de nomeação de arquivos "padrão" pareça ser [my-plugin-name]/[my-plugin-name].php, eu me apaixonei [my-plugin-name]/plugin.php.

Ele dá consistência a todos os meus plugins, fica claro que é o arquivo "bootloader" (principal) e, do ponto de vista mesquinho, odeio a repetição do nome do diretório.

Essa é outra razão pela qual faço a pergunta, pois 4) me atrapalhava. Além disso, eu gostaria de ouvir seus pensamentos sobre esse "padrão" também :)

TheDeadMedic
fonte
possível duplicata de Como criar uma API para meu plugin?
JayDeep Nimavat

Respostas:

6

Ao enviar um plug-in, a lesma se torna o nome do plug-in higienizado, conforme enviado. O "Nome" do plug-in pode mudar depois disso, mas a lesma permanece a mesma para sempre.

Quando o WordPress precisa verificar uma atualização do plug-in, ele obtém todas as informações de cabeçalho do plug-in e o nome do diretório em que o plug-in está, e envia para o WordPress.org.

Atualmente, três fatores são usados ​​para tentar fazer uma correspondência com os plug-ins no diretório. Observe que eu digo "atualmente", porque isso muda de vez em quando à medida que tentamos melhorar os algoritmos de correspondência.

  1. O nome do diretório do plug-in é geralmente o "slug" do plug-in. Pelo menos, é se você o instalou a partir do diretório para começar. Portanto, verificamos uma lesma com esse nome de diretório. Este não é um ótimo indicador, mas ajuda.

  2. O "Nome" no cabeçalho do plug-in também é pesquisado, pois o Nome deve ser exclusivo no diretório do plug-in. Se não houver correspondência com esse nome exato, o Nome será higienizado para produzir uma lesma, e também a procuraremos, apenas por precaução. Isso nem sempre funciona.

  3. O "URI do plug-in" no cabeçalho também é verificado quanto a uma correspondência. Como conhecemos esse valor para todos os plugins no diretório, isso pode ser considerado razoavelmente exclusivo para cada plug-in. Portanto, é recomendável que os autores de plug-ins insiram um URI de plug-in que aponte para um domínio que eles controlam e uma URL que seja exclusiva para o plug-in.

Todos esses três fatores são ponderados e o resultado principal é retornado. Os pesos usados ​​para cada um dos três refletem um nível de confiança na precisão dos dados. Por exemplo, Name pesa mais que o plugin-directory-as-slug, porque a maioria dos autores não altera os nomes dos plug-ins com muita frequência, e o plugin-directory pode realmente ser qualquer coisa se o usuário o instalou manualmente ou algo assim.

Quanto mais próxima a correspondência desses três itens, maior a probabilidade de corresponder ao plug-in. Mas pelo menos uma correspondência exata deve ser encontrada para que qualquer resultado seja retornado.

Para plug-ins únicos personalizados, costumo usar o nome do site no próprio nome do plug-in. Isso também me ajuda na organização. Portanto, meu nome único de plug-in pode ser "ottopress.com - Corrija o problema com o que for". É improvável que qualquer plug-in no diretório corresponda ao seu domínio.

Otto
fonte
Impressionante! Eu não acho que eu vou ser o único a apreciar esta resposta;)
TheDeadMedic
2

Como a entrada SVN é obviamente criada antes de você confirmar seu plug-in pela primeira vez - ela se baseia na sua solicitação inicial de entrada. Não sei se o processo é técnico ou manual, provavelmente um pouco dos dois.

Para fins de atualização, várias informações são enviadas e o repositório tenta determinar a correspondência - com base no nome do plug-in, nome do diretório, versão atual e possivelmente mais. Não sei se algum algoritmo exato foi publicado.

Rarst
fonte
1
Lembro-me de @ otto42 no passado, indicando que o AuthorURI é usado como um token exclusivo nesse processo, pois, enquanto a lesma do Plugin pode colidir, a combinação da lesma do Plugin e da AuthorURI quase nunca será.
Chip Bennett
Cheers guys - então é bem claro que não é apenas um atributo em particular. Seria uma visão para ver o algoritmo, no entanto. Alguma idéia da minha convenção de nomenclatura de arquivos?
TheDeadMedic
O nome do arquivo @TheDeadMedic não importa muito em geral, não acho que seja o suficiente para confundir a lógica da atualização.
Rarst