Пытаюсь осознать это. У меня есть страница в WP, и я использую редактор блоков. Я пытаюсь уйти от одноразовых полей ACF и перейти к использованию собственного редактора блоков. Обычно я создавал поле ACF WSYWIG, intro_content и называл его как
<?php the_field('intro_content'); ?>
Однако я хотел бы иметь возможность нацеливаться на собственные блоки Гутенберга. Скажем, например, у меня есть 4 отдельных блока абзацев, и я хочу разместить второй где-нибудь на странице.
Я могу вывести массив всех блоков следующим образом:
<?php
$blocks = parse_blocks( get_the_content() );
print_r($blocks);
?>
Что выведет это на страницу
Array ( [0] => Array ( [blockName] => core/paragraph [attrs] => Array ( [className] => foobar ) [innerBlocks] => Array ( ) [innerHTML] =>
This is P1
[innerContent] => Array ( [0] =>
This is P1
) ) [1] => Array ( [blockName] => [attrs] => Array ( ) [innerBlocks] => Array ( ) [innerHTML] => [innerContent] => Array ( [0] => ) ) [2] => Array ( [blockName] => core/paragraph [attrs] => Array ( ) [innerBlocks] => Array ( ) [innerHTML] =>
This is P2
[innerContent] => Array ( [0] =>
This is P2
) ) [3] => Array ( [blockName] => [attrs] => Array ( ) [innerBlocks] => Array ( ) [innerHTML] => [innerContent] => Array ( [0] => ) ) [4] => Array ( [blockName] => core/paragraph [attrs] => Array ( ) [innerBlocks] => Array ( ) [innerHTML] =>
This is P3
[innerContent] => Array ( [0] =>
This is P3
) ) [5] => Array ( [blockName] => [attrs] => Array ( ) [innerBlocks] => Array ( ) [innerHTML] => [innerContent] => Array ( [0] => ) ) [6] => Array ( [blockName] => core/paragraph [attrs] => Array ( ) [innerBlocks] => Array ( ) [innerHTML] =>
This is P4
[innerContent] => Array ( [0] =>
This is P4
) ) )
Как мне разместить внутреннее содержимое P3 в шаблоне?
echo $blocks[3]
У меня есть несколько блоков wpdatatable, и я могу показать их так:
<?php
$blocks = parse_blocks( get_the_content() );
foreach ( $blocks as $block ) {
if ( 'wpdatatables/wpdatatables-gutenberg-block' === $block['blockName'] ) {
echo do_shortcode( $block['innerHTML'] );
break;
}
}
?>
но не может получить доступ к конкретным блокам содержимого, кроме get_the_content ()
Я неправильно понимаю, как их использовать? Можно ли настроить таргетинг, присвоив ему имя или идентификатор класса? Или просто порядок в массиве? Спасибо.