Plugin SVN e API di aggiornamento: come vengono identificati i plug-in?


11

Una cosa che non mi è mai stata chiara (soprattutto da quando non ho inviato un plug-in al repository) è come viene generato l'ID "univoco" (slug) un plug-in (ovvero questo elenco ).

  1. È una scelta dell'autore al momento della presentazione di SVN o di un moderatore?
  2. È il nome del plugin disinfettato (titolo)?
  3. È il plugin_basename?
  4. È il file del plugin principale (senza il nome della directory)?
  5. Qualcos'altro?

Sono curioso di sapere quali attributi di un plug-in lo collegano alla sua controparte SVN (se ne ha uno) per l'API di aggiornamento del plug-in?

Chiedo, in parte per mia natura, di voler sapere, ma anche come assicurarmi (in una certa misura), i miei plugin una tantum non si scontreranno con uno nell'SVN.

Ad esempio, se fosse solo 3) , potrei usare un nome di directory altamente univoco, ma mantenere il nome del mio plugin (titolo) breve e dolce.


NB Anche se la convenzione di denominazione dei file "standard" sembra essere [my-plugin-name]/[my-plugin-name].php, mi sono appassionato [my-plugin-name]/plugin.php.

Dà un po 'di coerenza a tutti i miei plugin, è chiaro che è il file "mainloader" (principale), e da un punto di vista meschino odio la ripetizione del nome della directory.

Questa è un'altra ragione per cui faccio la domanda, dal momento che 4) mi rovinerebbe. Inoltre mi piacerebbe sentire i tuoi pensieri anche su questo "standard" :)


Risposte:


6

Quando si invia un plug-in, la lumaca diventa il nome del plug-in disinfettato, come inviato. Il "Nome" del plugin può cambiare dopo questo, ma lo slug rimane lo stesso per sempre di più.

Quando WordPress deve cercare un aggiornamento del plug-in, ottiene tutte le informazioni di intestazione del plug-in e il nome della directory in cui si trova il plug-in e lo invia a WordPress.org.

Attualmente vengono utilizzati tre fattori per provare a creare una corrispondenza con i plug-in nella directory. Nota che dico "attualmente", perché questo cambia ogni tanto mentre proviamo a migliorare gli algoritmi di corrispondenza.

  1. Il nome della directory del plugin è spesso lo "slug" del plugin. Almeno, è se lo hai installato dalla directory per cominciare. Quindi controlliamo una lumaca con quel nome di directory. Questo non è un ottimo indicatore, ma aiuta.

  2. Viene anche cercato il "Nome" nell'intestazione del plug-in, poiché il nome deve essere univoco nella directory del plug-in. Se non c'è corrispondenza su quel nome esatto, il Nome viene disinfettato per produrre una lumaca, e cerchiamo anche quella lumaca, per ogni evenienza. Questo non funziona sempre.

  3. L '"URI plug-in" nell'intestazione viene verificato anche per una corrispondenza. Dato che conosciamo quel valore per tutti i plugin nella directory, allora quello può essere considerato ragionevolmente univoco per ogni plugin. Pertanto, si consiglia agli autori di plug-in di inserire un URI plug-in che punti a un dominio che controllano e a un URL univoco per il plug-in.

Tutti e tre questi fattori vengono quindi ponderati e viene restituito il risultato migliore. I pesi utilizzati per ciascuno dei tre riflettono un livello di confidenza nell'accuratezza dei dati. Ad esempio, Nome ha un peso maggiore rispetto alla directory plug-in-come-slug, poiché la maggior parte degli autori non cambia molto spesso i nomi plug-in e la directory plug-in può effettivamente essere qualsiasi cosa se l'utente l'ha installato manualmente o qualcosa del genere.

Più è vicina la corrispondenza a questi tre elementi, più è probabile che corrisponda al plug-in. Ma almeno una corrispondenza esatta su questi deve essere trovata per ogni risultato da restituire.

Per i plugin personalizzati una tantum, tendo a usare il nome del sito nel nome del plugin stesso. Questo mi aiuta anche con l'organizzazione. Quindi il mio nome di plugin una tantum potrebbe essere "ottopress.com - Risolvi il problema con qualunque cosa". È improbabile che qualsiasi plug-in nella directory corrisponda al tuo dominio.


Eccezionale! Non credo che sarò l'unico ad apprezzare questa risposta;)
TheDeadMedic

2

Poiché la voce SVN viene ovviamente creata prima di eseguire il commit del plug-in per la prima volta, si basa sulla richiesta iniziale di iscrizione. Non so se il processo sia tecnico o manuale, probabilmente un po 'di entrambi.

A scopo di aggiornamento vengono inviate molte informazioni e il repository tenta di determinare la corrispondenza in base al nome del plug-in, al nome della directory, alla versione corrente e possibilmente ad altro. Non sono a conoscenza se l'algoritmo esatto sia mai stato pubblicato.


1
Ricordo @ otto42 in passato indicando che AuthorURI è usato come un po 'di token univoco in questo processo, poiché, mentre il plug-in Plugin può scontrarsi, la combinazione di Plugin slug e AuthorURI non lo farà quasi mai.
Chip Bennett,

Saluti ragazzi, quindi è abbastanza chiaro che non è solo un attributo particolare. Sarebbe comunque un'idea per vedere l'algoritmo. Qualche idea sulla mia convenzione di denominazione dei file?
TheDeadMedic il

Il nome del file @TheDeadMedic non importa molto in generale, non penso che basterebbe da solo a confondere la logica di aggiornamento.
Rarst
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.