如何在ACF构建的Gutenberg自定义区块中获取父区块ID与子区块索引
解决ACF自定义区块中Tab子区块获取父区块ID及自身索引的问题
1. 获取父Tabs区块的ID
ACF自定义区块的render.php文件中,每个区块都会自带$block变量,其中$block['parent']字段直接对应父区块的ID。你可以直接读取这个值,记得做存在性判断避免报错:
// Tab子区块的render.php文件 // 获取父区块ID $parent_block_id = isset($block['parent']) ? $block['parent'] : ''; // 示例:输出父区块ID(根据实际需求调整逻辑) if ($parent_block_id) { echo '父Tabs区块ID:' . esc_html($parent_block_id); }
2. 获取Tab子区块在父区块中的索引位置
子区块无法直接获取自身索引,需要通过父区块的遍历逻辑,将索引作为自定义属性传递给子区块:
步骤1:修改父Tabs区块的render.php
遍历父区块的inner_blocks,给每个Tab子区块添加tab_index属性:
// Tabs父区块的render.php文件 $inner_tabs = $block['inner_blocks']; $rendered_tabs = ''; foreach ($inner_tabs as $index => $tab_block) { // 为子区块添加索引属性 $tab_block['attrs']['tab_index'] = $index; // 渲染子区块并拼接结果 $rendered_tabs .= render_block($tab_block); } // 输出父区块容器及子区块内容 echo '<Tabs>' . $rendered_tabs . '</Tabs>';
步骤2:在Tab子区块的render.php中读取索引
直接从$block['attrs']中获取传递过来的索引值:
// Tab子区块的render.php文件 // 获取自身索引(默认值设为0) $tab_index = isset($block['attrs']['tab_index']) ? $block['attrs']['tab_index'] : 0; // 示例:输出当前Tab的索引位置 echo '当前Tab索引:' . esc_html($tab_index);
内容的提问来源于stack exchange,提问作者Kris D. J.
相关产品推荐
相关产品推荐

