Я относительно часто публикую различные сниппеты для WordPress, которые сильно упрощают жизнь. И почти всегда я акцентирую внимание на том, как правильно их подключить.
Конечно, проще и привычнее пойти традиционным путем и тупо вставить сниппет в файл functions.php вашей активной темы. Но в 9 из 10 случаев будет целесообразнее и правильнее вынести код сниппета в отдельный плагин. В крайнем случае, добавить его в специальный функциональный плагин вашего сайта. Т.н. Site-Specific WordPress Plugin, в котором-то и будет храниться весь дополнительный функционал вашего сайта.
Содержание
Зачем это нужно
Поясню на простом примере. Допустим, вы разработали сайт со сложной структурой, массой кастомных типов данных, таксономий, фильтров, меню, с поддержкой огромного количества произвольных полей и пользовательских настроек. Всю кастомизацию, как и подобает в таком случае, вы разместили в файле functions.php. Все хорошо, но пройдет какое-то время, и перед вами встанет задача редизайна. Вы захотите сменить или разработать новую тему. Тогда-то и начнутся проблемы. Потому что весь функционал сайта, интегрированный в старую тему, отключится вместе с ней.
Как же быть
Нужно понять простую истину: в файле функций темы должны располагаться только функции, относящиеся к дизайну вашего сайта. Конкретно к той теме, файл функций которой редактируется. А вся т.н. «механика», рабочий функционал сайта и все его кастомизации правильнее размещать в плагинах. Или в одном плагине. Тогда при смене темы, он останется нетронутым. Простой пример: в WordPress платежная система никогда не интегрируется в тему, а всегда подключается в виде плагина.
Создаем специальный плагин функций WordPress
На самом деле, все делается очень просто.
- В директории плагинов вашего WordPress создаете папку. Например: /wp-content/plugins/mysite-plugin/;
- Создаете в этой папке файл, назвав его, к примеру, my-plugin.php;
- Вставляете в этот файл примерно такой код:
<?php /* Plugin Name: Мой Плагин Description: Плагин дополнительных функций моего сайта */ /* Начало дополнительных функций */ /* Конец дополнительных функций */ ?>
- Переходите в настройки управления плагинами и активизируете свой новый плагин.
Заголовок, описание и комментарии к коду можно заменить на свои. Теперь все необходимые сниппеты и кастомизацию вы можете размещать в этом плагине. Не боясь потерять функционал сайта при очередной смене активной темы.
На этом можно и остановиться, но с моей стороны было бы не совсем правильно не упомянуть про т.н. MU-плагины.
MU-плагины (Must Use Plugins)
MU-плагины бывают очень полезны в случаях, когда отключение плагина недопустимо и может вызвать критические ошибки в работе сайта. Например, на клиентских сайтах. Во-избежании некорректных действий клиента в консоли управления сайтом.
MU-плагины — это плагины обязательного использования WordPress, которые устанавливаются в специальную директорию и всегда активны. MU-плагины не отображаются в общем списке плагинов сайта, для них существует отдельная вкладка. Их возможно отключить лишь непосредственно удалив файл MU-плагина из директории.
Преимущества MU-плагинов
- MU-плагины не нужно активировать, они всегда активны, их невозможно отключить в консоли управления сайтом;
- MU-плагин подключается и активируется банальной закачкой файла плагина в директорию mu-plugins;
- MU-плагины загружаются в алфавитном порядке перед загрузкой обычных плагинов.
Обратите внимание, поддиректории у MU-плагинов, в отличие от обычных, не поддерживаются. В крайнем случае можно создать плагин и написать в нем простенький загрузчик, который будет загружать плагины из директорий. Примерно, так:
require WPMU_PLUGIN_DIR.'/my-plugin-1/my-plugin-1.php'; require WPMU_PLUGIN_DIR.'/my-plugin-2/my-plugin-2.php';
В заключение
Как видите, ничего принципиально сложного в использовании функциональных плагинов нет. А преимущества их использования налицо. Мне не раз приходилось слышать такое мнение, что плагины создают на сайт какую-то неимоверную нагрузку. У многих пользователей существуют некие предубеждения о вреде использования плагинов. Это не совсем верно. Вред могут нанести левые, неизвестно кем разработанные и неизвестно откуда скачанные плагины. Плохая оптимизация работы плагина, использование устаревших функций PHP и WordPress. Вред может быть от большого количества одновременно работающих плагинов. Особенно с дублирующим функционалом. Возможен и банальный конфликт плагинов, плагинов с темой. А при грамотном и разумном подходе, плагины принесут вашему сайту исключительно пользу.
Делаю сайты на Вордпресс с 2008 года, в том числе уникальные инструменты для решения сложных бизнес‑задач.
Подробнее