parse_blocks() WP 5.0.0

Отримує дані про блоки (Гутенберг) з переданого контенту (рядки).

Хуки з функції

Повертає

Массив[]. Дані щодо блоків.

Використання

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.0.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);
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *