Лучшая практика включения плагинов в тему?


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

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

Как лучше всего включать плагины в тему?

Author: Tom, 2010-09-24

2 answers

Если вы планируете выпускать их независимо, то выпускайте их независимо и попытайтесь разместить их оба в репозитории WP. Это позволит вам обновлять системы удаленно и поддерживать людей, использующих самую современную возможную систему.

Затем в своей теме используйте is_plugin_active() для фильтрации ваших команд. Если у вас есть функция темы, для которой требуется плагин, используйте is_plugin_active(), чтобы динамически переключаться между использованием функции или уговорами пользователя установить плагин.

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

В качестве альтернативы, если вы знаете, что определенный плагин не будет меняться в течение очень долгого времени (я использую несколько плагинов, которые только добавляют/удаляют определенные фильтры WP), вы можете поместить файл PHP в /library каталог с вашей темой и include() файл в functions.php. Затем функциональность включена по умолчанию - компромисс заключается в том, что теперь вы поддерживаете две версии плагина (как вы упомянули в своем первоначальном вопросе).

 5
Author: EAMann, 2010-09-24 14:30:00

В основном у вас есть три возможных случая:

  • тема и плагин установлены;
  • установлена только тема;
  • установлен только плагин.

Примите во внимание, что с большей вероятностью будет обновлено:

  • плагин, размещенный в репозитории, - вероятно;
  • тема, размещенная в репозитории, - вероятно;
  • не размещенная в репозитории тема или плагин - маловероятно;
  • дочерняя тема - маловероятно (не может быть размещена в репозитории, ручное объединение изменений потому что он предназначен для настройки конечным пользователем).

Так что в целом неплохо сохранить код таким же (похожим, если не идентичным) и загружать его в тему условно, когда плагина нет. Потому что, как сейчас, плагины и проще, и чаще обновляются.

Очевидно, что тема должна иметь возможность использовать встроенный или отдельный плагин, и плагин вообще не должен зависеть от кода темы.

Лучшая (но сложная практика) - это создание ваших расширений как контекстно-независимый (он же фреймворк) и используйте пользовательский загрузчик для проверки версий и загрузки последних доступных. Практический пример рамочного подхода см. в scbframework, который распространяется как отдельный плагин и используется в нескольких других плагинах.

 2
Author: Rarst, 2010-09-24 11:16:23