Plugin SVN & Update API - Wie werden Plugins identifiziert?

11

Eine Sache, die mir nie klar war (zumal ich kein Plugin an das Repository gesendet habe), ist, wie die eindeutige "ID" (Slug) eines Plugins (dh diese Liste ) generiert wird .

  1. Ist es eine Entscheidung des Autors zum Zeitpunkt der Einreichung des SVN oder eines Moderators?
  2. Ist es der Name des bereinigten Plugins (Titel)?
  3. Ist es das plugin_basename?
  4. Ist es die Haupt-Plugin-Datei (ohne den Verzeichnisnamen)?
  5. Etwas anderes?

Ich bin gespannt, welche Attribute eines Plugins es mit seinem SVN-Gegenstück (falls vorhanden) für die Plugin-Update-API verknüpfen .

Ich frage, zum Teil aus meiner Natur heraus, ob ich es wissen möchte, aber auch, wie ich (bis zu einem gewissen Grad) sicherstellen kann, dass meine eigenen einmaligen Plugins nicht mit denen im SVN kollidieren.

Wenn es zum Beispiel nur 3) wäre , könnte ich einen sehr eindeutigen Verzeichnisnamen verwenden, aber meinen Plugin-Namen (Titel) kurz und bündig halten.


NB Während die "Standard" -Dateinamenskonvention zu sein scheint [my-plugin-name]/[my-plugin-name].php, habe ich gern [my-plugin-name]/plugin.php.

Es gibt allen meinen Plugins eine gewisse Konsistenz, es ist klar, dass es sich um die "Bootloader" -Datei (Hauptdatei) handelt, und ich hasse es, wenn der Verzeichnisname wiederholt wird.

Dies ist ein weiterer Grund, warum ich die Frage stelle, da 4) mich verarschen würde. Außerdem würde ich gerne Ihre Gedanken zu diesem "Standard" hören :)

TheDeadMedic
quelle
mögliches Duplikat von Wie erstelle ich eine API für mein Plugin?
JayDeep Nimavat

Antworten:

6

Beim Senden eines Plugins wird der Slug zum Namen des gesäuberten Plugins, wie er gesendet wurde. Der "Name" des Plugins kann sich danach ändern, aber der Slug bleibt für immer derselbe.

Wenn WordPress nach einem Plugin-Update suchen muss, werden alle Header-Informationen des Plugins und der Verzeichnisname, in dem sich das Plugin befindet, abgerufen und an WordPress.org gesendet.

Gegenwärtig werden drei Faktoren verwendet, um eine Übereinstimmung mit den Plugins im Verzeichnis herzustellen. Beachten Sie, dass ich "derzeit" sage, da sich dies von Zeit zu Zeit ändert, wenn wir versuchen, die Matching-Algorithmen zu verbessern.

  1. Der Name des Plugin-Verzeichnisses ist häufig der "Slug" des Plugins. Zumindest, wenn Sie es von Anfang an aus dem Verzeichnis installiert haben. Also suchen wir nach einem Slug mit diesem Verzeichnisnamen. Dies ist kein guter Indikator, aber er hilft.

  2. Der "Name" im Plugin-Header wird ebenfalls gesucht, da der Name im Plugin-Verzeichnis eindeutig sein muss. Wenn es keine Übereinstimmung für diesen genauen Namen gibt, wird der Name bereinigt, um eine Schnecke zu erzeugen, und wir suchen ebenfalls nach dieser Schnecke, nur für den Fall. Das funktioniert nicht immer.

  3. Die "Plugin URI" im Header wird ebenfalls auf eine Übereinstimmung überprüft. Da wir diesen Wert für alle Plugins im Verzeichnis kennen, kann dies für jedes Plugin als einigermaßen eindeutig angesehen werden. Daher ist es für Plugin-Autoren ratsam, einen Plugin-URI einzugeben, der auf eine von ihnen kontrollierte Domain und eine für das Plugin eindeutige URL verweist.

Alle drei Faktoren werden dann gewichtet und das beste Ergebnis wird zurückgegeben. Die für jede der drei verwendeten Gewichte spiegeln ein Vertrauensniveau in die Genauigkeit der Daten wider. Zum Beispiel wird Name höher gewichtet als das Plugin-Verzeichnis-as-Slug, da die meisten Autoren die Plugin-Namen nicht sehr oft ändern und das Plugin-Verzeichnis eigentlich alles sein kann, wenn der Benutzer es manuell oder so etwas installiert hat.

Je näher die Übereinstimmung mit diesen drei Elementen ist, desto wahrscheinlicher ist es, dass diese mit dem Plugin übereinstimmen. Es muss jedoch mindestens eine genaue Übereinstimmung für diese gefunden werden, damit ein Ergebnis zurückgegeben werden kann.

Bei benutzerdefinierten einmaligen Plugins verwende ich in der Regel den Site-Namen im Namen des Plugins. Das hilft mir auch bei der Organisation. Mein einmaliger Plugin-Name könnte also "ottopress.com - Fix issue with whatever" sein. Es ist unwahrscheinlich, dass ein Plugin im Verzeichnis Ihrer Domain entspricht.

Otto
quelle
Genial! Ich glaube nicht, dass ich der einzige sein werde, der diese Antwort zu schätzen weiß;)
TheDeadMedic
2

Da der SVN-Eintrag offensichtlich erstellt wird, bevor Sie Ihr Plugin zum ersten Mal festschreiben, basiert er auf Ihrer ersten Eingabeaufforderung. Ich weiß nicht, ob der Prozess technisch oder manuell ist, wahrscheinlich ein bisschen von beidem.

Zu Aktualisierungszwecken werden eine Reihe von Informationen übermittelt, und das Repository versucht, die Übereinstimmung zu ermitteln - basierend auf dem Namen des Plugins, dem Verzeichnisnamen, der aktuellen Version und möglicherweise mehr. Mir ist nicht bekannt, ob der genaue Algorithmus jemals veröffentlicht wurde.

Rarst
quelle
1
Ich erinnere mich an @ otto42 in der Vergangenheit, das darauf hinweist, dass AuthorURI als eindeutiges Token in diesem Prozess verwendet wird, da die Kombination aus Plugin-Slug und AuthorURI so gut wie nie zusammenstößt.
Chip Bennett
Prost Leute - es ist also ziemlich klar, dass es nicht nur ein bestimmtes Attribut ist. Wäre eine Einsicht, den Algorithmus trotzdem zu sehen. Irgendwelche Gedanken zu meiner Dateinamenskonvention?
TheDeadMedic
Der Dateiname von @TheDeadMedic spielt im Allgemeinen keine große Rolle. Ich denke, es würde auch nicht ausreichen, um die Aktualisierungslogik zu verwirren.
Rarst