Динамический блок
Оригинальное название: dynamic block
Коротко
Блок, который при сохранении записи оставляет в базе лишь свои настройки, а HTML строит PHP-кодом на сервере каждый раз, когда страницу открывают.
Что такое «Динамический блок»
Обычный блок — абзац или кнопка — сохраняет готовую разметку в текст записи. Это не подходит для данных, которые меняются без участия автора: свежих записей, остатков товара, курса валют, меню. Если бы блок «Последние записи» хранил HTML, список застыл бы в момент сохранения. Поэтому такие блоки хранят только комментарий вида <!-- wp:latest-posts {"postsToShow":5} /-->, а при выводе страницы WordPress вызывает их PHP-обработчик. Динамические в ядре — «Последние записи», «Последние комментарии», блок запроса, навигация, архивы, все блоки темы.
Как сделать свой
Начиная с WordPress 6.1 обработчик удобно подключать прямо в block.json полем "render": "file:./render.php". В файле доступны переменные $attributes, $content и $block:
<?php
$items = get_posts( array( 'numberposts' => $attributes['count'] ?? 3 ) );
?>
<ul <?php echo get_block_wrapper_attributes(); ?>>
<?php foreach ( $items as $item ) : ?>
<li><a href="<?php echo esc_url( get_permalink( $item ) ); ?>">
<?php echo esc_html( get_the_title( $item ) ); ?>
</a></li>
<?php endforeach; ?>
</ul>
В JavaScript-части функция save возвращает null. Для предпросмотра в редакторе используют компонент ServerSideRender, который запрашивает тот же HTML у сервера, либо рисуют упрощённый вид на JavaScript. В старом коде вместо файла встречается параметр render_callback функции register_block_type().
Плюсы и цена
Главный плюс — разметку можно менять в одном месте, и она обновится во всех записях сразу, без пересохранения и ошибок валидации. В отличие от статического блока, такой блок не ломается при смене вёрстки. Цена — PHP-код и запросы к базе при каждом показе. На посещаемых страницах тяжёлый обработчик стоит кэшировать: через транзиенты или постраничный кэш.
Когда лучше статический
Если содержимое задаёт автор и оно не зависит от других данных — цитата, карточка услуги, таблица характеристик, — статический блок проще и быстрее. Есть и гибрид: внутренние блоки сохраняются как обычно, а PHP лишь оборачивает их или дополняет. Так работают блоки, которым нужна и свободная вёрстка от автора, и свежие данные с сервера.

