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


11

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

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

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

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

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


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

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

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


Ответы:


6

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

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

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

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

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

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

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

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

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


Потрясающие! Я не думаю, что я буду единственным, кто оценит этот ответ;)
TheDeadMedic

2

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

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


1
Я вспоминаю @ otto42 в прошлом, указывающий, что AuthorURI используется в качестве уникального токена в этом процессе, поскольку, хотя слаг плагинов может конфликтовать, комбинация слагов плагинов и AuthorURI почти никогда не будет.
Чип Беннетт

Приветствия, ребята - так что совершенно ясно, что это не просто один конкретный атрибут. Было бы понимание, чтобы увидеть алгоритм, тем не менее. Есть какие-нибудь мысли о моем соглашении об именовании файлов?
TheDeadMedic

Имя файла @TheDeadMedic не имеет большого значения в общем, я не думаю, что одного этого было бы достаточно, чтобы также запутать логику обновления.
Первый
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.