Плагин SVN и API обновления - как определяются плагины?


Одна вещь, которая мне никогда не была ясна (особенно с тех пор, как я не отправил плагин в репозиторий), заключается в том, как генерируется уникальный "идентификатор" плагина (slug) (т.Е. этот список).

  1. Это выбор автора в момент отправки SVN или модератора?
  2. Это имя (название) очищенного плагина?
  3. Является ли это plugin_basename?
  4. Это основной файл плагина (без имени каталога)?
  5. Что-то еще?

Мне любопытно, какие атрибуты плагина связывают его с его аналогом SVN (если он есть) для API обновления плагина?

Я спрашиваю, отчасти из-за моей природы, чтобы хотеть знать, но также и как гарантировать (в какой-то степени), что мои собственные одноразовые плагины не будут конфликтовать с одним из SVN.

Например, если бы это было только 3), Я мог бы использовать очень уникальное имя каталога, но имя (название) моего плагина должно быть коротким и приятным.


Н.Б. В то время как "стандартное" соглашение об именовании файлов, похоже, [my-plugin-name]/[my-plugin-name].php, я полюбил [my-plugin-name]/plugin.php.

Это придает всем моим плагинам некоторую согласованность, ясно, что это файл "загрузчика" (основной), и с мелочной точки зрения я ненавижу повторение имени каталога.

Это еще одна причина, по которой я задаю этот вопрос, поскольку 4) обманул бы меня. Плюс я бы тоже хотел услышать ваши мысли об этом "стандарте":)

Author: TheDeadMedic, 2012-02-25

2 answers

При отправке плагина слаг становится очищенным именем плагина, как было отправлено. "Имя" плагина может измениться после этого, но слизняк останется прежним навсегда.

Когда WordPress необходимо проверить наличие обновления плагина, он получает всю информацию о заголовке плагина и имя каталога, в котором находится плагин, и отправляет ее в WordPress.org .

В настоящее время используются три фактора, чтобы попытаться сопоставить плагины в каталоге. Обратите внимание, что я говорю "в настоящее время", потому что это меняется так часто, когда мы пытаемся улучшить алгоритмы сопоставления.

  1. Имя каталога плагинов часто является "слизняком" плагина. По крайней мере, это так, если вы установили его с самого начала из каталога. Поэтому мы проверяем наличие пули с таким именем каталога. Это не очень хороший показатель, но он помогает.

  2. "Имя" в заголовке плагина также ищется, так как имя должно быть уникальным в каталоге плагинов. Если нет совпадения на это точное имя, затем Имя очищается для получения слизняка, и мы также ищем этого слизняка, на всякий случай. Это не всегда срабатывает.

  3. "URI плагина" в заголовке также проверяется на соответствие. Поскольку мы знаем это значение для всех плагинов в каталоге, то его можно считать достаточно уникальным для каждого плагина. Таким образом, авторам плагинов рекомендуется указывать URI плагина, который указывает на домен, которым они управляют, и URL-адрес, уникальный для плагин.

Все три из этих факторов затем взвешиваются, и возвращается верхний результат. Веса, используемые для каждого из трех показателей, отражают уровень достоверности точности данных. Например, имя имеет больший вес, чем каталог плагинов как пуля, потому что большинство авторов не очень часто меняют имена плагинов, а каталог плагинов на самом деле может быть чем угодно, если пользователь установил его вручную или что-то в этом роде.

Чем ближе совпадение с этими тремя пунктами, тем более вероятно это то, что соответствует плагину. Но по крайней мере одно точное совпадение на них должно быть найдено, чтобы любой результат был возвращен.

Для пользовательских одноразовых плагинов я обычно использую название сайта в самом названии плагина. Это также помогает мне в организации. Так что мое одноразовое имя плагина может быть"ottopress.com - Исправьте проблему с чем угодно". Маловероятно, чтобы какой-либо плагин в каталоге соответствовал вашему домену.

 6
Author: Otto, 2012-03-07 14:57:20

Поскольку запись SVN, очевидно, создается до того, как вы впервые зафиксируете свой плагин - она основана на вашем первоначальном запросе на ввод. Я не знаю, является ли процесс техническим или ручным, возможно, немного того и другого.

Для целей обновления отправляется куча информации, и репозиторий пытается определить соответствие на основе имени плагина, имени каталога, текущей версии и, возможно, большего. Я не знаю, был ли когда-либо опубликован точный алгоритм.

 2
Author: Rarst, 2012-02-25 12:53:19