Справочник: события и фильтры
Как пользоваться хуками — в «Как устроена CMS».
Событие: add_action('имя', fn (...$аргументы) => …). Фильтр: add_filter('имя', fn ($значение, ...$аргументы) => $новоеЗначение).
{папка}, {тип}, {имя} в названии — подставляется папка плагина, тип записей, имя настройки.
События (actions)#
Загрузка#
| Событие |
Аргументы |
Когда |
plugins_loaded |
— |
подключены все включённые плагины |
after_setup_theme |
— |
подключены шаблоны и functions.php активной темы |
init |
— |
всё загружено: регистрируйте типы записей, таксономии, блоки, роли |
Админка#
| Событие |
Аргументы |
Когда |
admin_init |
$request |
в начале каждой страницы админки |
admin_menu |
$menu (Cms\Admin\AdminMenu) |
строится левое меню: $menu->add(…), $menu->addSubmenu(…) |
dashboard_setup |
$widgets (Cms\Admin\DashboardWidgets) |
собираются виджеты консоли: $widgets->add('id', 'Заголовок', fn () => view(…)) |
admin_head |
— |
в <head> страниц админки |
admin_notices |
— |
вверху каждой страницы админки, над её содержимым: здесь выводят свои предупреждения и подсказки |
admin_footer |
— |
в конце страниц админки |
login_form |
— |
внутри формы входа |
settings_general_form |
— |
в конце формы «Настройки → Общие» |
show_user_profile |
$user |
в форме своего профиля |
edit_user_profile |
$user |
в форме чужого профиля |
add_meta_boxes |
$postType, $post, $boxes |
открыт редактор записи: добавьте свои блоки полей |
edit_form_after_editor |
$post |
в редакторе после поля текста |
Записи#
| Событие |
Аргументы |
Когда |
save_post |
$post, $request, $update |
запись сохранена в редакторе ($update — false для новой; если её уже создало автосохранение — true); автосохранение его не вызывает |
save_post_{тип} |
$post, $request, $update |
то же для записей одного типа: save_post_page, save_post_review |
trash_post |
$post |
запись перенесена в корзину |
untrash_post |
$post |
запись восстановлена из корзины |
before_delete_post |
$post |
перед удалением записи насовсем |
restore_revision |
$post, $revision |
запись восстановлена из ревизии |
Рубрики, метки, медиатека#
| Событие |
Аргументы |
Когда |
created_term |
$term |
создан термин (рубрика, метка…) |
edited_term |
$term |
термин изменён |
delete_term |
$term |
термин удаляется |
add_attachment |
$media |
файл загружен в медиатеку |
edit_attachment |
$media |
изменены данные файла |
delete_attachment |
$media |
файл удаляется |
Пользователи и настройки#
| Событие |
Аргументы |
Когда |
user_register |
$user |
создан пользователь |
profile_update |
$user |
изменены данные пользователя |
set_user_role |
$user, $role, $oldRole |
сменилась роль |
delete_user |
$user |
пользователь удаляется |
updated_option |
$name, $old, $new |
изменена настройка |
deleted_option |
$name |
удалена настройка |
Сайт и темы#
| Событие |
Аргументы |
Когда |
template_redirect |
$context |
понятно, что открыто, шаблон ещё не выбран — можно перенаправить или отдать свой ответ |
site_head |
$context |
в <head> страниц сайта (из cms_head()) |
site_body_open |
$context |
сразу после <body> (из cms_body_open()) |
site_footer |
$context |
перед </body> (из cms_footer()) |
switch_theme |
$theme, $oldSlug |
активирована другая тема |
starter_sidebar |
$context |
событие темы «Старт»: внизу боковой колонки |
Плагины и темы#
| Событие |
Аргументы |
Когда |
activate_{папка} |
$plugin |
включается этот плагин (лучше — register_activation_hook()) |
deactivate_{папка} |
$plugin |
отключается этот плагин (register_deactivation_hook()) |
activated_plugin |
$plugin |
включён любой плагин |
deactivated_plugin |
$plugin |
отключён любой плагин |
installed_plugin |
$plugin, $replaced |
плагин установлен (или обновлён) из архива |
deleted_plugin |
$slug |
плагин удалён |
installed_theme |
$theme, $replaced |
тема установлена (или обновлена) из архива |
deleted_theme |
$slug |
тема удалена |
Формы, установка, обновления, резервные копии#
| Событие |
Аргументы |
Когда |
form_submitted |
$form, $entry |
пришла заявка с формы (уже сохранена) |
cms_installed |
$user |
мастер установки закончил работу ($user — администратор) |
core_updated |
$from, $to |
CMS обновлена (база тоже) |
backup_created |
$file |
сделана резервная копия (путь к zip) |
backup_restored |
$file |
сайт восстановлен из копии |
Фильтры#
Содержимое#
| Фильтр |
Значение и аргументы |
Что меняет |
the_title |
$title, $post |
заголовок записи при выводе (displayTitle()) |
the_content |
$html, $post |
текст записи при выводе (contentHtml()) |
excerpt_length |
$words (40) |
длина отрывка в словах |
render_block |
$html, $block, $post |
HTML одного блока |
load_block_styles |
$load (true) |
подключать ли стили блоков на сайте |
embed_resolve |
$embed, $url |
видео по ссылке для блока «Видео» |
upload_types |
$types |
какие файлы можно загружать (группа → расширения) |
image_sizes |
$sizes |
размеры уменьшенных копий картинок |
Сайт и темы#
| Фильтр |
Значение и аргументы |
Что меняет |
template_hierarchy |
$candidates, $context |
список шаблонов, из которых выбирается первый найденный |
{тип}_template_hierarchy |
$candidates, $context |
то же для одного вида страниц: single_…, page_…, category_…, search_…, front_page_… |
template_include |
$view, $context |
итоговый шаблон |
document_title |
$title, $context |
заголовок вкладки браузера |
meta_description |
$description, $context |
описание страницы для поисковиков |
archive_title |
$title, $context |
заголовок архива (рубрики, метки, поиска) |
body_class |
$classes |
классы <body> |
nav_menu_items |
$tree, $menu |
пункты меню перед выводом |
nav_menu_html |
$html, $location, $args |
готовый HTML меню |
SEO#
| Фильтр |
Значение и аргументы |
Что меняет |
robots_noindex |
$noindex, $context |
скрыть страницу от поисковиков |
og_tags |
$tags, $context |
метки Open Graph (og:title, og:image…) |
sitemap_entries |
$entries |
адреса в sitemap.xml (['loc' => …, 'lastmod' => …]) |
robots_txt |
$text |
текст robots.txt |
Админка, настройки, плагины#
| Фильтр |
Значение и аргументы |
Что меняет |
admin_title |
$title, $pageTitle |
заголовок вкладки браузера в админке |
admin_footer_text |
$html |
текст внизу страниц админки |
option_{имя} |
$value |
значение настройки при чтении (get_option) |
pre_update_option_{имя} |
$value, $old |
значение настройки перед сохранением |
plugin_action_links_{папка} |
$links, $plugin |
ссылки под названием этого плагина ('Текст' => 'адрес') |
plugin_action_links |
$links, $plugin |
то же для всех плагинов |
Формы, здоровье сайта, резервные копии#
| Фильтр |
Значение и аргументы |
Что меняет |
form_fields |
$fields, $form |
поля формы при выводе |
form_recipients |
$emails, $form |
кому отправлять письма о заявках |
site_health_checks |
$checks, $quick |
проверки «Здоровья сайта»: добавьте свою ['id', 'status' => good/recommended/critical, 'label', 'description', 'action'] |
backup_paths |
$paths |
папки сайта в резервной копии |