Антон, поделюсь своим решением, в котором не нужно дублировать переменные.
Допустим, у меня есть группа acf-полей
Hero. Я хочу использовать эти поля и в Flexible Content и в Гутенберге.
Файл с версткой и вызовом полей, пусть находится в
blocks/hero.php. Основная проблема тут в том, что Flexible Content использует
get_sub_field(), а для работы Гутенберга по-умолчанию нужны
get_field().
Чтобы "обмануть" Гутенберг — я создаю еще одну группу полей. Пусть будет
Hero Block. Группа очень простая, это репитер (пусть будет имя block) с одним полем типа clone, в котором указаны все поля из группы
Hero. В настройках репитера стоит мин и макс 1 строка.
При регистрации блока я указываю не
render_template, а
render_callback и создаю функцию в которой этот репитер будет вызываться. В итоге в functions.php следующая конструкция:
Регистрация блока: (хук и проверку наличия ацф опустил)
acf_register_block_type(array(
'name' => 'Hero',
'title' => __('Hero Block'),
'description' => __('A custom Hero block.'),
'render_callback' => 'block_hero',
'category' => 'formatting',
));
Колбэк-функция:
function block_hero() {
while (have_rows('block')): the_row();
get_template_part('blocks/hero');
endwhile;
}