Справочник: функции для тем и плагинов

Все функции объявлены в core/src/helpers.php и доступны везде: в plugin.php, functions.php, классах и шаблонах Blade. Записи можно передавать моделью или id (Post|int), файлы медиатеки — моделью Media или id.

Хуки

Функция Что делает
add_action(string $hook, callable $callback, int $priority = 10, ?int $acceptedArgs = null) подписаться на событие
do_action(string $hook, mixed ...$args) вызвать событие
remove_action(string $hook, callable $callback, int $priority = 10): bool отписаться
has_action(string $hook, ?callable $callback = null): int|bool есть ли обработчики (или приоритет этого обработчика)
did_action(string $hook): int сколько раз событие уже срабатывало
add_filter(string $hook, callable $callback, int $priority = 10, ?int $acceptedArgs = null) подписаться на фильтр
apply_filters(string $hook, mixed $value = null, mixed ...$args): mixed пропустить значение через фильтр
remove_filter(string $hook, callable $callback, int $priority = 10): bool отписаться от фильтра
has_filter(string $hook, ?callable $callback = null): int|bool есть ли обработчики фильтра

Настройки, права, роли

Функция Что делает
get_option(string $name, mixed $default = null): mixed значение настройки
update_option(string $name, mixed $value, ?bool $autoload = null): bool сохранить настройку ($autoload — загружать ли её вместе со всеми на каждом запросе)
delete_option(string $name): bool удалить настройку
current_user_can(string $capability, mixed ...$args): bool есть ли у вошедшего пользователя право (для записей: current_user_can('edit_post', $post))
add_role(string $slug, string $name, array $capabilities = []) добавить роль
remove_role(string $slug) убрать роль

Типы записей, записи, метаполя

Функция Что делает
register_post_type(string $name, array $args = []): PostType свой тип записей — см. Контент
register_taxonomy(string $name, array|string $objectTypes, array $args = []): Taxonomy своя таксономия
get_post(Post|int $post): ?Post запись по id
get_permalink(Post|int $post): ?string адрес записи на сайте
get_post_meta(Post|int $post, string $key, mixed $default = null): mixed метаполе
update_post_meta(Post|int $post, string $key, mixed $value) сохранить метаполе
delete_post_meta(Post|int $post, string $key) удалить метаполе
get_posts(array $args = []): Collection опубликованные записи: type, number, category, tag, exclude, orderby, order
get_terms(string $taxonomy, array $args = []): Collection термины с posts_count: hide_empty, number, orderby, parent

Редактор: поля и блоки

Функция Что делает
add_meta_box(string $id, string $title, Closure|string $callback, array|string $screen = '*', string $context = 'normal', int $priority = 10) блок полей в редакторе (вызывайте в событии add_meta_boxes)
remove_meta_box(string $id) убрать блок полей
register_block_type(string $name, array $args): BlockType свой блок редактора — см. Блоки
unregister_block_type(string $name) убрать блок
render_blocks(array $blocks): string HTML из блоков, сохранённых не в записи

Медиатека и изображения записей

Функция Что делает
get_media(Media|int|null $media): ?Media файл медиатеки
media_url(Media|int|null $media, string $size = 'full'): ?string адрес файла; для картинок — размер: thumbnail, medium, large, full или свой
media_image(Media|int|null $media, string $size = 'large', array $attributes = []) готовый тег <img> с srcset и sizes (браузер берёт копию по размеру экрана), шириной, высотой и loading="lazy"; атрибуты можно добавить или переопределить, null убирает атрибут
add_image_size(string $name, int $width, int $height, bool $crop = false, ?string $label = null) свой размер уменьшенных копий
has_post_thumbnail(Post|int $post): bool есть ли у записи изображение
get_post_thumbnail_url(Post|int $post, string $size = 'large'): ?string адрес изображения записи
get_post_thumbnail(Post|int $post, string $size = 'large', array $attributes = []) тег <img> изображения записи с srcset (пусто, если изображения нет)
set_post_thumbnail(Post|int $post, Media|int $media) назначить изображение записи
delete_post_thumbnail(Post|int $post) убрать изображение записи

Сайт и шаблоны

Функция Что делает
cms_context(): ?QueryContext что сейчас открыто на сайте (в шаблонах — переменная $context)
site_title(): string, site_description(): string название и описание сайта
home_url(string $path = ''): string адрес главной или пути на сайте
privacy_policy_url(): string адрес страницы политики конфиденциальности из «Настройки → Чтение» или пустая строка
cms_head(): HtmlString всё для <head>: заголовок, описание, Open Graph, стили блоков, событие site_head, код счётчиков из «Настройки → SEO»
theme_styles(): HtmlString assets/css/style.css активной темы (у дочерней — сначала родительской)
cms_body_open(): HtmlString сразу после <body>: событие site_body_open
cms_footer(): HtmlString перед </body>: панель администратора, событие site_footer и «Код перед </body>» из «Настройки → SEO»
body_class(array|string $extra = []): string классы для <body>: home, single, page, category-novosti, logged-in…
theme_asset(string $path): string адрес файла из assets/ активной темы (с учётом родительской)
cms_form(int $id): HtmlString форма из раздела «Формы»

Меню

Функция Что делает
register_nav_menus(array $locations) области меню темы: ['social' => 'Соцсети']
has_nav_menu(string $location): bool назначено ли меню в область
cms_nav_menu(string $location, array $args = []): HtmlString вывести меню: class, id, depth, fallback (pages)

Плагины и админка

Функция Что делает
is_plugin_active(string $slug): bool включён ли плагин
plugin_path(string $slug, string $path = ''): string путь к файлу внутри папки плагина
plugin_asset(string $slug, string $path): string адрес файла из assets/ плагина
register_activation_hook(Plugin|string $plugin, callable $callback) что сделать при включении плагина
register_deactivation_hook(Plugin|string $plugin, callable $callback) что сделать при отключении
add_admin_page(string $slug, string $title, callable|string $callback, array $args = []) своя страница в админке — см. Плагины
admin_page_url(string $slug, array $params = []): string адрес этой страницы
cms_asset(string $path): string адрес файла из public/ с меткой времени изменения

Даты

Функция Что делает
cms_date(DateTimeInterface|string|null $date = null, ?string $format = null): string дата в часовом поясе и формате сайта («21 октября 2026»); без даты — сейчас
cms_time(DateTimeInterface|string|null $date = null): string время в формате сайта
cms_datetime(DateTimeInterface|string|null $date = null): string дата и время

Числа

Функция Что делает
cms_plural(int|float $number, string $forms): string слово в нужной форме для числа: cms_plural(5, 'файл|файла|файлов') → «файлов»