В этой статье мы рассмотрим функцию do_blocks()
в WordPress, которая используется для обработки контента и рендеринга всех блоков Gutenberg, содержащихся в этом контенте. Эта функция полезна для разработчиков, которые хотят программно отрендерить весь контент, содержащий блоки, как это делает редактор Gutenberg.
Описание функции
Функция do_blocks()
принимает строку контента, содержащего блоки Gutenberg, обрабатывает её и рендерит все блоки.
do_blocks( $content )
Параметры:
$content
(строка): Контент для обработки и рендеринга блоков.
Возвращаемое значение:
- HTML строка с отрендеренными блоками.
Примеры использования
Рассмотрим несколько примеров использования функции do_blocks()
.
Рендеринг контента поста
Этот пример показывает, как программно обработать и отрендерить контент поста:
function render_post_content( $post_id ) {
$post = get_post( $post_id );
$content = $post->post_content;
$rendered_content = do_blocks( $content );
echo $rendered_content;
}
// Пример использования:
add_action( 'wp_footer', function() {
render_post_content( get_the_ID() );
});
Рендеринг произвольного контента с блоками
Вы можете использовать do_blocks()
для обработки и рендеринга произвольного контента, содержащего блоки:
function render_custom_content() {
$content = '
<!-- wp:paragraph -->
<p>Это пример абзаца.</p>
<!-- /wp:paragraph -->
<!-- wp:image {"id":123,"sizeSlug":"large"} -->
<figure class="wp-block-image size-large"><img src="https://example.com/image.jpg" alt=""/></figure>
<!-- /wp:image -->
';
$rendered_content = do_blocks( $content );
echo $rendered_content;
}
// Пример использования:
add_action( 'wp_footer', 'render_custom_content' );
Изменение и рендеринг контента
Этот пример показывает, как изменить контент перед его рендерингом:
function modify_and_render_content( $post_id ) {
$post = get_post( $post_id );
$content = $post->post_content;
// Добавление дополнительного контента
$additional_content = '
<!-- wp:paragraph -->
<p>Это дополнительный контент.</p>
<!-- /wp:paragraph -->
';
$modified_content = $content . $additional_content;
$rendered_content = do_blocks( $modified_content );
echo $rendered_content;
}
// Пример использования:
add_action( 'wp_footer', function() {
modify_and_render_content( get_the_ID() );
});
Рендеринг блоков на произвольной странице
Вы можете использовать do_blocks()
для рендеринга блоков на произвольной странице, например, в шорткоде:
function custom_render_blocks_shortcode( $atts, $content = null ) {
if ( $content ) {
return do_blocks( $content );
}
return '';
}
add_shortcode( 'render_blocks', 'custom_render_blocks_shortcode' );
// Пример использования шорткода в посте или странице:
echo do_shortcode( '[render_blocks]<!-- wp:paragraph --><p>Контент в шорткоде.</p><!-- /wp:paragraph -->[/render_blocks]' );
Заключение по do_blocks
Функция do_blocks()
предоставляет разработчикам простой способ обработки и рендеринга контента, содержащего блоки Gutenberg. Это позволяет гибко создавать и отображать контент на сайте, как это делает редактор Gutenberg.