WordPress как на ладони

parse_blocks()WP 5.0.0

Получает данные о блоках (Гутенберг) из переданного контента (строки).

Работает на основе: WP_Block_Parser()
Хуки из функции

Возвращает

Массив[]. Данные по блокам.

Использование

parse_blocks( $content );
$content(строка) (обязательный)
Контент, который нужно распарсить.

Примеры

0

#1 Пример возвращаемых данных

Пусть у нас следующего вида контент:

<!-- wp:gallery {"ids":[11]} -->
<figure class="wp-block-gallery columns-1 is-cropped">
	<ul class="blocks-gallery-grid">
		<li class="blocks-gallery-item">
			<figure>
				<img src="https://wp-test.ru/wp-content/uploads/2020/05/2020-landscape-1-1024x656.png" alt="" 
					data-id="11" 
					data-full-url="https://wp-test.ru/wp-content/uploads/2020/05/2020-landscape-1.png" 
					data-link="https://wp-test.ru/my-super-image/" 
					class="wp-image-11"/>
			</figure>
		</li>
	</ul>
</figure>
<!-- /wp:gallery -->

<!-- wp:cover {"overlayColor":"luminous-vivid-amber"} -->
<div class="wp-block-cover has-luminous-vivid-amber-background-color has-background-dim">
	<div class="wp-block-cover__inner-container">
		<!-- wp:paragraph {"align":"center","placeholder":"Введите заголовок...","fontSize":"large"} -->
		<p class="has-text-align-center has-large-font-size">Супер заголовок блока!</p>
		<!-- /wp:paragraph -->
	</div>
</div>
<!-- /wp:cover -->

<!-- wp:paragraph -->
<p>Обычный параграф с текстом</p>
<!-- /wp:paragraph -->

Пропустим данный контент через функцию

$parse_content = parse_blocks( $content );
print_r( $parse_content );

Функция вернёт следующий результат:

Array
(
	[0] => Array
		(
			[blockName] => core/gallery
			[attrs] => Array
				(
					[ids] => Array
						(
							[0] => 11
						)

				)

			[innerBlocks] => Array
				(
				)

			[innerHTML] => 
<figure class="wp-block-gallery columns-1 is-cropped"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><img src="https://wp-test.ru/wp-content/uploads/2020/05/2020-landscape-1-1024x656.png" alt="" data-id="11" data-full-url="https://wp-test.ru/wp-content/uploads/2020/05/2020-landscape-1.png" data-link="https://wp-test.ru/my-super-image/" class="wp-image-11"/></figure></li></ul></figure>

			[innerContent] => Array
				(
					[0] => 
<figure class="wp-block-gallery columns-1 is-cropped"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><img src="https://wp-test.ru/wp-content/uploads/2020/05/2020-landscape-1-1024x656.png" alt="" data-id="11" data-full-url="https://wp-test.ru/wp-content/uploads/2020/05/2020-landscape-1.png" data-link="https://wp-test.ru/my-super-image/" class="wp-image-11"/></figure></li></ul></figure>

				)

		)

	[1] => Array
		(
			[blockName] => 
			[attrs] => Array
				(
				)

			[innerBlocks] => Array
				(
				)

			[innerHTML] => 

			[innerContent] => Array
				(
					[0] => 

				)

		)

	[2] => Array
		(
			[blockName] => core/cover
			[attrs] => Array
				(
					[overlayColor] => luminous-vivid-amber
				)

			[innerBlocks] => Array
				(
					[0] => Array
						(
							[blockName] => core/paragraph
							[attrs] => Array
								(
									[align] => center
									[placeholder] => Введите заголовок...
									[fontSize] => large
								)

							[innerBlocks] => Array
								(
								)

							[innerHTML] => 
<p class="has-text-align-center has-large-font-size">Супер заголовок блока!</p>

							[innerContent] => Array
								(
									[0] => 
<p class="has-text-align-center has-large-font-size">Супер заголовок блока!</p>

								)

						)

				)

			[innerHTML] => 
<div class="wp-block-cover has-luminous-vivid-amber-background-color has-background-dim"><div class="wp-block-cover__inner-container"></div></div>

			[innerContent] => Array
				(
					[0] => 
<div class="wp-block-cover has-luminous-vivid-amber-background-color has-background-dim"><div class="wp-block-cover__inner-container">
					[1] => 
					[2] => </div></div>

				)

		)

	[3] => Array
		(
			[blockName] => 
			[attrs] => Array
				(
				)

			[innerBlocks] => Array
				(
				)

			[innerHTML] => 

			[innerContent] => Array
				(
					[0] => 

				)

		)

	[4] => Array
		(
			[blockName] => core/paragraph
			[attrs] => Array
				(
				)

			[innerBlocks] => Array
				(
				)

			[innerHTML] => 
<p>Обычный параграф с текстом</p>

			[innerContent] => Array
				(
					[0] => 
<p>Обычный параграф с текстом</p>

				)

		)

)

Список изменений

С версии 5.0.0 Введена.

Код parse_blocks() WP 6.5.2

function parse_blocks( $content ) {
	/**
	 * Filter to allow plugins to replace the server-side block parser.
	 *
	 * @since 5.0.0
	 *
	 * @param string $parser_class Name of block parser class.
	 */
	$parser_class = apply_filters( 'block_parser_class', 'WP_Block_Parser' );

	$parser = new $parser_class();
	return $parser->parse( $content );
}
campusboy 4750youtube.com/c/wpplus
Создатель YouTube канала wp-plus, на котором делюсь своим опытом. Активный пользователь wp-kama.ru. WordPress-разработчик. Разработка сайтов и лендингов. Доработка существующих проектов. Сопровождение ресурсов.
Редакторы: Kama 9616
1 комментарий
    Войти