web-dev-qa-db-fra.com

Plugin SVN & API de mise à jour - comment les plugins sont-ils identifiés?

Une chose qui n’a jamais été claire pour moi (surtout depuis que je n’ai pas soumis de plug-in au référentiel), c’est comment un "ID" unique du plugin est généré (c.-à-d. cette liste ) .

  1. Est-ce un choix de l'auteur au moment de la soumission de SVN ou d'un modérateur?
  2. Est-ce le nom du plugin désinfecté (titre)?
  3. Est-ce le plugin_basename?
  4. Est-ce le fichier principal du plugin (sans le nom du répertoire)?
  5. Autre chose?

Je suis curieux de savoir quel attribut d'un plugin le lie à son homologue SVN (s'il en a un) pour l'API de mise à jour du plugin?

Je demande, en partie de par ma nature, de vouloir savoir, mais aussi comment faire en sorte (dans une certaine mesure) que mes propres plug-ins ponctuels ne se heurtent pas à ceux du SVN.

Par exemple, s'il ne s'agissait que de 3) , je pourrais utiliser un nom de répertoire hautement unique, tout en conservant le nom de mon plugin (titre) court 'n sweet.


N.B. Bien que la convention de dénomination de fichier "standard" semble être [my-plugin-name]/[my-plugin-name].php, je me suis attachée à [my-plugin-name]/plugin.php.

Cela donne à tous mes plugins une certaine cohérence, il est clair que c'est le fichier "bootloader" (principal), et d'un point de vue mesquin, je déteste la répétition du nom du répertoire.

C'est une autre raison pour laquelle je pose la question, car 4) me bousillerait. De plus, j'aimerais connaître votre avis sur ce "standard" aussi :)

12
TheDeadMedic

Lors de la soumission d'un plugin, le slug devient le nom du plugin assaini, tel que soumis. Le "Nom" du plugin peut changer après cela, mais le slug reste toujours le même.

Lorsque WordPress doit rechercher une mise à jour de plug-in, il obtient toutes les informations d'en-tête du plug-in et le nom du répertoire dans lequel il se trouve, et l'envoie à WordPress.org.

Trois facteurs sont actuellement utilisés pour tenter de faire correspondre les plug-ins du répertoire. Notez que je dis "actuellement", car cela change de temps en temps lorsque nous essayons d'améliorer les algorithmes de correspondance.

  1. Le nom du répertoire du plugin est souvent le "slug" du plugin. C'est du moins le cas si vous l'avez installé à partir du répertoire. Nous vérifions donc si un slug porte ce nom de répertoire. Ce n'est pas un bon indicateur, mais ça aide.

  2. Le "Nom" dans l'en-tête du plugin est également recherché, car Name doit être unique dans le répertoire du plugin. S'il n'y a pas de correspondance pour ce nom exact, le nom est alors assaini pour produire une limace, et nous recherchons également cette limace, juste au cas où. Cela ne marche pas toujours.

  3. Le "Plugin URI" dans l'en-tête est également vérifié pour une correspondance. Puisque nous connaissons cette valeur pour tous les plugins du répertoire, cela peut être considéré comme raisonnablement unique pour chaque plugin. Ainsi, les auteurs de plug-in sont bien avisés de mettre dans un URI de plug-in qui pointe vers un domaine qu'ils contrôlent et une URL unique pour le plug-in.

Ces trois facteurs sont ensuite pondérés et le résultat final est renvoyé. Les pondérations utilisées pour chacun des trois reflètent un niveau de confiance dans l'exactitude des données. Par exemple, Nom est plus pondéré que plugin-directory-as-slug, car la plupart des auteurs ne changent pas très souvent de noms de plug-ins, et plugin-directory peut en réalité être n'importe quoi si l'utilisateur l'a installé manuellement.

Plus la correspondance avec ces trois éléments est étroite, plus il est probable que cela corresponde au plugin. Mais au moins une correspondance exacte doit être trouvée pour que tout résultat soit renvoyé.

Pour les plugins uniques personnalisés, j'ai tendance à utiliser le nom du site dans le nom du plugin lui-même. Cela m'aide aussi pour l'organisation. Donc, mon nom de plug-in unique pourrait être "ottopress.com - Correction d'un problème avec quoi que ce soit". Peu probable qu'un plugin du répertoire corresponde à votre domaine.

7
Otto

Comme l'entrée SVN est évidemment créée avant que vous ne validiez votre plug-in pour la première fois, elle est basée sur votre demande d'entrée initiale. Je ne sais pas si le processus est technique ou manuel, probablement un peu des deux.

À des fins de mise à jour, de nombreuses informations sont soumises et le référentiel tente de déterminer la correspondance - en fonction du nom du plug-in, du nom du répertoire, de la version actuelle et éventuellement davantage. Je ne sais pas si l'algorithme exact a déjà été publié.

2
Rarst