do_blocks()
Преобразует указанную строку c разметкой Gutenberg-блоков в готовый HTML, последовательно парся и рендеря каждый блок.
Функция проходит по содержимому, создаёт дерево блоков через parse_blocks(), а затем выводит HTML каждого блока, вызывая render_block(). Таким образом вы получаете HTML блоков, но в любом нужном месте — например, при выводе данных из метаполей или REST API.
Функция по умолчанию висит на хуке the_content:
add_filter( 'the_content', 'do_blocks', 9 );
Если передать строку, где нет комментариев <!-- wp:... -->, функция вернёт исходный текст без изменений.
Работает на основе: parse_blocks(), render_block()
1 раз — 0.0066509 сек (очень медленно) | 50000 раз — 30.33 сек (очень медленно) | PHP 8.2.25, WP 6.8.1
Хуков нет.
Возвращает
Строку. Отрендерённый HTML-контент.
Использование
do_blocks( $content );
- $content(string) (обязательный)
- Сырой контент в блок-нотации Gutenberg:
<!-- wp:paragraph -->…<!-- /wp:paragraph -->.
Примеры
#1 Используем в REST API-эндпойнте
Возвращаем HTML блоков вместо сырой разметки.
register_rest_field( 'post', 'blocks_html', [ 'get_callback' => fn( $post_arr ) => do_blocks( $post_arr['content']['raw'] ), ] );
#2 Демо
$block_content = do_blocks(
<<<'HTML'
<!-- wp:group {"layout":{"type":"constrained"}} -->
<div class="wp-block-group">
<!-- wp:heading {"level":2} -->
<h2>Пример заголовка</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Это демонстрационный параграф. Он будет отображён так же, как в редакторе.</p>
<!-- /wp:paragraph -->
<!-- wp:image {"sizeSlug":"large"} -->
<figure class="wp-block-image size-large">
<img src="https://via.placeholder.com/1024x512" alt="Placeholder" />
</figure>
<!-- /wp:image -->
</div>
<!-- /wp:group -->
HTML
);
echo $block_content;
Получим:
<div class="wp-block-group"> <div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained"> <h2 class="wp-block-heading">Пример заголовка</h2> <p>Это демонстрационный параграф. Он будет отображён так же, как в редакторе.</p> <figure class="wp-block-image size-large"> <img src="https://via.placeholder.com/1024x512" alt="Placeholder"/> </figure> </div> </div>
Список изменений
| С версии 5.0.0 | Введена. |