我错过了一些我觉得非常简单的东西,但环顾四周却找不到答案
while ( have_rows('page_builder') ) : the_row();
if( get_row_layout() == 'one_column' ): // Single Column
update_sub_field('field_60745782d2943', get_the_content());
endif;
endwhile;
这是一个遍历所有帖子的循环。我设置了 ACF 灵活内容,其中有不同的布局。其中之一称为“一柱”。我需要从每个帖子中获取 the_content() 并更新 one_column 布局内的子字段。当手动为每个帖子选择并保存一栏时,此概念将起作用。整个 has_rows('page_builder') 永远不会被触发,因为没有行。我有 500 多个帖子 添加新布局类型时,是否会在 ACF 中触发?是添加新行吗?子排?我已经尝试了我能找到的每一个迭代,但它们都不会为我创建该块。最后,我想在这之前添加一段代码来创建 one_column ,以便它可以顺利运行。我确信实际上有一种方法可以在创建行后更新子字段,但我正在努力创建它!
if(!have_rows("page_builder")){
THIS IS WHERE I AM STUCK. HOW DO I CREATE AN INSTANCE OF 'ONE COLUMN'
}
SOLUTION
$value = array(
// nested array for each row you want to create
array(
// field key => value pairs for row
'acf_fc_layout' => 'one_column',
'field_60745782d2943' => get_the_content();
)
)
update_field('field_key_of_flex_field', $value, $post_id)
It was the acf_fc_layout that I was missing.
尝试使用
add_row()
功能
if(!have_rows("page_builder")){
$new_row = array(
'field_XXXXXX' => 'Your value here', //replace with the appropriate field key
);
add_row('page_builder', $new_row);
}