Plugin SVN e atualização API - como os plugins são identificados?

12

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

  1. É uma escolha do autor no ponto de envio do SVN ou por um moderador?
  2. É o nome do plugin higienizado (título)?
  3. É o plugin_basename ?
  4. É o arquivo principal do plugin (sem o nome do diretório)?
  5. Algo mais?

Estou curioso para saber qual (is) atributo (s) de um plug-in vinculá-lo à sua contraparte do SVN (se tiver um) para a API de atualização do plug-in?

Eu pergunto, em parte por minha natureza querer saber, mas também como garantir (até certo ponto), meus próprios plugins únicos não colidirão 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 plug-in (título) curto e simples.

N.B. Embora a convenção de nomenclatura de arquivos "padrão" pareça ser [my-plugin-name]/[my-plugin-name].php , tornei-me afeiçoada a [my-plugin-name]/plugin.php .

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

Essa é outra razão pela qual faço a pergunta, já que 4) me atrapalharia. Além disso, eu gostaria de ouvir seus pensamentos sobre este "padrão" também:)

    
por TheDeadMedic 25.02.2012 / 12:30

2 respostas

7

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

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

Três fatores são usados atualmente para tentar fazer uma correspondência com os plug-ins no diretório. Note que eu digo "atualmente", porque isso muda sempre que tentamos melhorar os algoritmos de correspondência.

  1. O nome do diretório de plugins é geralmente o "slug" do plugin. Pelo menos, é se você instalou a partir do diretório para começar. Então, nós procuramos por um slug com o nome do diretório. Este não é um ótimo indicador, mas ajuda.

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

  3. O "Plugin URI" no cabeçalho também é verificado para uma correspondência. Como sabemos esse valor para todos os plug-ins no diretório, isso pode ser considerado razoavelmente exclusivo para cada plug-in. Assim, os autores de plugins devem inserir um URI de plug-in que aponte para um domínio que eles controlam e um URL exclusivo 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 tem um peso maior que o plugin-directory-as-slug, porque a maioria dos autores não altera os nomes dos plugins com muita frequência, e o plugin-directory pode ser qualquer coisa se o usuário instalá-lo manualmente ou algo do tipo.

Quanto mais próxima a correspondência desses três itens, mais provável é que isso corresponda ao plug-in. Mas pelo menos uma correspondência exata deve ser encontrada para que qualquer resultado seja retornado.

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

    
por Otto 06.03.2012 / 17:14
2

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

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 um algoritmo exato já foi publicado.

    
por Rarst 25.02.2012 / 13:53