如何程序化创建ACF灵活布局中的One Column行?
问题:批量为文章创建ACF Flexible Content的One Column布局并填充内容
我需要将每篇文章的the_content()内容批量更新到ACF Flexible Content的one_column布局子字段中。现有代码放在遍历所有文章的循环里,但由于大量文章未创建对应的one_column行,have_rows('page_builder')始终不会触发。手动为文章选择并保存One Column布局后,逻辑能正常运行,但我有500多篇文章,必须批量处理。
现有代码:
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;
我卡在了批量创建布局的步骤:当文章没有page_builder行时,不知道如何生成one_column布局实例:
if(!have_rows("page_builder")){ // 这里不知道怎么创建One Column布局实例 }
解决方案
ACF Flexible Content字段的值是一个数组,每个元素对应一行布局,其中必须包含acf_fc_layout键来指定布局类型。通过update_field直接写入这个数组即可批量创建布局并填充内容:
$value = array( // 每个嵌套数组对应一行要创建的布局 array( // 指定布局的标识名称(与ACF后台设置的布局名称一致) 'acf_fc_layout' => 'one_column', // 子字段的字段键 => 要填充的内容 'field_60745782d2943' => get_the_content() ) ); // 替换为你的Flexible Content字段的字段键,传入当前文章ID update_field('field_key_of_flex_field', $value, $post_id);
关键是之前漏掉了acf_fc_layout参数,ACF需要通过这个参数识别要创建的布局类型,添加后就能正常生成one_column布局并填充内容了。
内容的提问来源于stack exchange,提问作者jeynon
相关产品推荐
相关产品推荐

