Создание пользовательских хуков

wordpress-hooks

Обзор

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

Пользовательские хуки создаются и вызываются таким же образом, как и хуки ядра, используя

add_action() / do_action() и

add_filter() / apply_filters()

Так как любой плагин может создать пользовательский хук, важно, чтобы ваши имена хуков имели префиксы, чтобы избежать совпадения с другими плагинами. Например, фильтр с именем email_body будет менее пригодным, потому что велика вероятность, что другой разработчик может выбрать такое же имя. Если пользователь устанавливает оба плагина, это может привести к ошибкам, которые трудно отследить. Именование функции abcd_email_body (где abcd_ является уникальным префиксом для плагина) позволит избежать каких-либо противоречий.

Хорошей практикой является использование apply_filters() для любого текста, который выводится на экран — в частности, на фронтенде. Так проще вносить изменения в ваш плагин в соответствии с потребностями пользователя.

Примеры

Создание расширяемой формы настроек

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

Так что теперь еще один плагин может зарегистрировать callback для пользовательского myplugin_after_form_settings экшена и добавить новые настройки:

Создание расширяемого пользовательского типа записи

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

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

External Resources (англ.)

Навигация по разделам:

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *