Skip to content

Добавление расширения

Lev Zvyagintsev edited this page Jan 23, 2020 · 5 revisions

В зависимости от того, где должно быть доступно новое расширение, добавить его в плагин можно двумя основными способами:

1. Расширение должно быть доступно глобально

Такие расширения сразу же доступны на всех сайтах, где устанавливается Лейка. Таковы, например, все расширения, разработанные командой Лейки - они входят в состав плагина наряду с её основными функциями.

Добавление "глобального" расширения

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).

2. Расширение должно быть доступно только в отдельном проекте/проектах

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

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

  • Добавить на сайт отдельный кастомный плагин. В коде этого плагина определить класс расширения (см. п. 1.4-1.5 выше) и код, который зарегистрирует расширение в Лейке (см. п. 1.6 выше).
  • Добавить код класса расширения и его регистрацию в Лейке (см. п. 1.4-1.6 выше) в тему сайта.
    • Внимание: этот подход допустим только если используемая тема сайта не предполагает автоматического обновления. Иначе любой код, добавленный в тему, будет удалён при её обновлении.
Clone this wiki locally