-
Notifications
You must be signed in to change notification settings - Fork 52
Добавление расширения
В зависимости от того, где должно быть доступно новое расширение, добавить его в плагин можно двумя основными способами:
Такие расширения сразу же доступны на всех сайтах, где устанавливается Лейка. Таковы, например, все расширения, разработанные командой Лейки - они входят в состав плагина наряду с её основными функциями.
1.1. Сделать форк основной ветки разработки Лейки (master). Далее работы выполняются в этом форке.
1.2. Создать в папке /extensions/ новую подпапку. Её название должно включать только символы алфавита (латиницы), цифры (0-9), а также символы нижнего подчёркивания ("_") и минуса ("-"). Название папки будет служить идентификатором (ID) нового расширения.
1.3. В подпапке расширения создать основной файл расширения. Этот файл должен иметь название вида "leyka-class-ID_расширения-extension.php". Например, если ваше расширение имеет ID "our-global-ext" (/inc/our-global-ext/), то его основной файл должен называться "leyka-class-our-global-ext-extension.php".
1.3.1. Добавить в начало основного файла расширения информационный комментарий. Например:
/**
* Leyka Extension: Our global ext
* Version: 0.1a
* Author: Имя автора
* Author URI: Адрес сайта автора
* Debug only: 0 // Укажите значение "1", если расширение должно быть видно только при включённом режиме отладки; укажите "0", если расширение должно быть видно всегда.
**/
1.4. В основном файле расширения определить класс расширения.
1.4.1. Класс должен быть подклассом Leyka_Extension.
1.4.2. Класс должен иметь название в соотв. со стилем кодирования, принятым в WordPress. Для примера выше класс назывался бы Leyka_Our_Global_Ext_Extension.
1.4.3. В классе должен быть определён защищённый статический атрибут $_instance (это требование исходит из того, что классы расширений - всегда синглтоны).
1.4.4. В классе должен быть определён защищённый метод _set_attributes(). Этот метод служит для инициализации атрибутов объекта расширения:
- $_id (ID расширения, см. выше),
- $_title (название расширения на русском яз.),
- $_description (краткое описание расширения, макс. 130 символов),
- $_full_description (более подробное описание расширения, макс. 300 символов),
- $_settings_description (описание работы расширения для страницы его настроек, длина не ограничивается),
- $_connection_description (краткое описание подключения какой-либо функции в составе расширения, не обязательно),
- $_user_docs_link (ссылка на инструкцию по расширению для пользователей, не обязательно),
- $_has_wizard (есть ли у расширения Мастер настройки),
- $_has_color_options (использует ли расширение набор настроек цветов, принятый для "глобальных" расширений Лейки).
1.4.5. Если расширению необходимы опции, в его классе может быть определён метод _set_options_defaults(). Подробнее о настройке опций расширения - на соотв. странице инструкции.
1.5. В основном классе расширения определить методы, которые добавят расширению конкретные функции. Подробнее об этих методах и хуках на соотв. странице инструкции.
1.6. После определения класса расширения добавить в файл код для включения объекта этого класса в список расширений Лейки:
function leyka_add_extension_our_global_ext() {
leyka()->add_extension(Leyka_Our_Global_Ext_Extension::get_instance());
}
add_action('leyka_init_actions', 'leyka_add_extension_our_global_ext');
1.7. Выполнить pull request для включения кода форка в основной код плагина.
Примечание: плагин включает код специального "глобального" расширения - /extensions/test-1. Оно не выполняет никаких полезных функций и служит только для примера при разработке расширений (в частности, доступных глобально). Это расширение выводится в списке расширений только при включённом режиме отладки (в файле wp-config.php константа WP_DEBUG должна иметь значение true).
В этом случае большинство шагов будет соответствовать п. 1 (то есть процедуре добавления "глобального" расширения). Основное различие только в том, где будет располагаться основной файл расширения (или, точнее, код определения класса расширения).
Так как расширение не должно входить в код Лейки, оно должно быть определено где-то вне этого кода. В этом случае, как и при других кастомных модификациях поведения Лейки (а также других плагинов или тем WordPress), можно использовать, например, следующие подходы:
- Добавить на сайт отдельный кастомный плагин. В коде этого плагина определить класс расширения (см. п. 1.4-1.5 выше) и код, который зарегистрирует расширение в Лейке (см. п. 1.6 выше).
- Добавить код класса расширения и его регистрацию в Лейке (см. п. 1.4-1.6 выше) в тему сайта.
- Внимание: этот подход допустим только если используемая тема сайта не предполагает автоматического обновления. Иначе любой код, добавленный в тему, будет удалён при её обновлении.