web-dev-qa-db-ja.com

プラグインSVNとアップデートデータAPI - プラグインはどこのように識別されますか?

(特にリポジトリにプラグインを送信していないので)私にはっきりしないことの1つは、プラグインの一意の "ID"(slug)がどのように生成されるかです(つまり このリスト )。

  1. SVN提出時点での作者による選択ですか、それともモデレーターによる選択ですか?
  2. サニタイズされたプラグインの名前(タイトル)ですか?
  3. それはplugin_basenameですか?
  4. それはメインのプラグインファイルですか(ディレクトリ名なし)?
  5. 他に何か?

私はプラグインの更新APIのためのプラグインのどの属性そのSVNの対応物へのリンク(それが持っているなら)_について興味がありますか?

私は本質的に知りたいことだけではなく、ある程度まではどのようにして私自身の1回限りのプラグインがSVNのものと衝突しないようにするかについても尋ねます。

例えば、それがだけだった場合、非常にユニークなディレクトリ名を使うことができますが、私のプラグイン名(タイトル)を短くしておいてください。


N.B.「標準の」ファイル命名規則は[my-plugin-name]/[my-plugin-name].phpのようですが、私は[my-plugin-name]/plugin.phpが好きになりました。

それは私のすべてのプラグインにいくらかの一貫性を与えます、それが「ブートローダ」(メイン)ファイルであることは明らかです、そしてささいな観点から私はディレクトリ名の繰り返しが嫌いです。

これは私が質問するもう一つの理由です、なぜなら4)は私を台無しにするでしょうから。加えて、私もこの「標準」についてのあなたの考えを聞きたいです:)

12
TheDeadMedic

プラグインを送信すると、送信されたとおり、スラッグがサニタイズされたプラグイン名になります。プラグインの「名前」はこれ以降変更することができますがスラッグはもっとずっと同じままです。

WordPressがプラグインの更新をチェックする必要があるとき、それはプラグインのすべてのヘッダ情報とプラグインが入っているディレクトリ名を得て、それをWordPress.orgに送ります。

現在、ディレクトリ内のプラグインと一致させるために3つの要素が使用されています。マッチングアルゴリズムを改良しようとするたびにこれが頻繁に変わるので、私は「現在」と言うことに注意してください。

  1. プラグインディレクトリ名は、多くの場合、プラグインの「スラッグ」です。少なくとも、最初からディレクトリからインストールした場合です。そこで、そのディレクトリ名のスラッグをチェックします。これは良い指標ではありませんが、役に立ちます。

  2. Nameはプラグインディレクトリ内で一意である必要があるため、プラグインヘッダー内の "Name"も検索されます。その正確な名前に一致するものがない場合、Nameはスラグを生成するためにサニタイズされ、念のためそのスラグも検索します。これは常にうまくいくとは限りません。

  3. ヘッダー内の「プラグインURI」も一致するかどうかを確認します。ディレクトリ内のすべてのプラグインについてその値がわかっているので、それは各プラグインにとって合理的に一意であると考えることができます。したがって、プラグインの作者は、自分が管理しているドメインを指すプラグインURIと、そのプラグインに固有のURLを含めることをお勧めします。

これら3つの要素すべてに重みが付けられ、最高の結果が返されます。 3つのそれぞれに使用される重みは、データの正確さにおける信頼水準を反映しています。たとえば、Nameはplugin-directory-as-slugよりも高い重みが付けられています。これは、ほとんどの作者がプラグイン名をあまり頻繁に変更しないためです。

これら3つの項目が一致するほど、プラグインと一致する可能性が高くなります。しかし、結果が返されるためには、これらに対して少なくとも1つの完全一致が見つかる必要があります。

カスタムの1回限りのプラグインでは、プラグイン名自体にサイト名を使用する傾向があります。これは組織化にも役立ちます。だから私の一時的なプラグイン名は "ottopress.com - 何でも問題を解決する"かもしれません。ディレクトリ内のプラグインがドメインと一致することはほとんどありません。

7
Otto

あなたが初めてあなたのプラグインをコミットする前にSVNエントリが明らかに作成されているので - それはエントリのためのあなたの最初のリクエストに基づいています。プロセスが技術的なものなのか手動なのか、私にはわかりません。

更新の目的で、たくさんの情報が送信され、リポジトリはプラグインの名前、ディレクトリ名、現在のバージョンなどに基づいて一致を判断しようとします。正確なアルゴリズムが公開されたことがあるかどうかはわかりません。

2
Rarst