Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с wordpress.stackexchange
scroll top