Mit folgender Funktion habe ich sensible Einstellungen aus einem Gutenberg Block ausgelesen, ohne diese über das Frontend übertragen zu müssen.
/**
* Sucht einen Block anhand der blockId
*
* @param array $arBlocks
* @param string $block_id
*
* @return false|array
*/
$search_block = function(array $arBlocks, string $block_id) use (&$search_block) {
foreach ($arBlocks as $block) {
if (($block['attrs']['blockId']??'') === $block_id) {
return $block;
}
$sub = $search_block(($block['innerBlocks']??[]), $block_id);
if ($sub !== false) return $sub;
}
return false;
};
$post = get_post($post_id);
$arBlocks = parse_blocks($post->post_content);
$block = $search_block($arBlocks, $blockId);