本文详解如何使用 acf 的 `update_field()` 函数,精准更新深度嵌套(group 内含 group)结构中的子字段值,避免 `update_sub_field()` 在非 repeater 环境下失效的问题。
在 Advanced Custom Fields(ACF)中,当字段结构为「Group → Group → Sub Field」(即多层静态 Group 嵌套,非 Repeater 或 Flexible Content)时,update_sub_field() 无法直接使用——因为它仅在 have_rows() / the_row() 循环上下文中对 Repeater 或 Flexible Content 的当前行生效。而你的 Working hours 字段(field_61f453c010074)是顶层 Group,其下的 Monday(field_61f4570e892
81)仍是普通 Group(非可重复),因此第一种写法逻辑错误:have_rows() 对 Group 字段无意义,循环不会执行,update_sub_field() 也因缺失有效行上下文而静默失败。
✅ 正确做法是:将整个嵌套 Group 结构视为一个关联数组,用 update_field() 一次性写入完整层级数据。ACF 支持通过嵌套数组键名映射字段层级,前提是数组结构与字段定义严格一致。
以下是你案例的推荐解决方案:
// 构建完整的 'Working hours' Group 数据(含所有星期)
$working_hours = array(
// Monday Group(注意:字段键名必须与 ACF 后台的 field key 完全一致)
'field_61f4570e89281' => array(
'field_61f4573589282' => !empty($_POST['monday_am']) ? intval($_POST['monday_am']) : 0, // Am
'field_61f4574589283' => !empty($_POST['monday_pm']) ? intval($_POST['monday_pm']) : 0, // Pm
),
// Tuesday Group
'field_61f7a30ffbcf0' => array(
'field_61f7a30ffbcf1' => !empty($_POST['tuesday_am']) ? intval($_POST['tuesday_am']) : 0,
'field_61f7a30ffbcf2' => !empty($_POST['tuesday_pm']) ? intval($_POST['tuesday_pm']) : 0,
),
// ... 其他星期同理(Wednesday 到 Sunday)
);
// 更新顶层 Group 字段
update_field('field_61f453c010074', $working_hours, $post_id);将字段结构抽象为常量或配置数组,提升可维护性:
$hour_fields = [
'monday' => ['group' => 'field_61f4570e89281', 'am' => 'field_61f4573589282', 'pm' => 'field_61f4574589283'],
'tuesday' => ['group' => 'field_61f7a30ffbcf0', 'am' => 'field_61f7a30ffbcf1', 'pm' => 'field_61f7a30ffbcf2'],
// ... 其他
];
$data = [];
foreach ($hour_fields as $day => $keys) {
$data[$keys['group']] = [
$keys['am'] => intval($_POST["{$day}_am"] ?? 0),
$keys['pm'] => intval($_POST["{$day}_pm"] ?? 0),
];
}
update_field('field_61f453c010074', $data, $post_id);掌握这一模式后,无论嵌套几层 Group(Group → Group → Group → Text),只需按层级展开数组即可精准赋值——这是 ACF 处理复杂静态结构最稳定、最推荐的方式。
# 前端
# xss
# 常量
# 关联数组
# 字符串
# 循环
# number
# 键名
# 这是
# 这一
# 只需
# 适用于
# 仍是
# 因为它
# 不需
# 而非
# 中对
相关文章:
如何通过二级域名建站提升品牌影响力?
如何用wdcp快速搭建高效网站?
Java解压缩zip - 解压缩多个文件或文件夹实例
,在苏州找工作,上哪个网站比较好?
黑客如何通过漏洞一步步攻陷网站服务器?
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
网站制作软件有哪些,制图软件有哪些?
交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
个人摄影网站制作流程,摄影爱好者都去什么网站?
,sp开头的版面叫什么?
建站之星下载版如何获取与安装?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
网站专业制作公司有哪些,做一个公司网站要多少钱?
太平洋网站制作公司,网络用语太平洋是什么意思?
高端建站三要素:定制模板、企业官网与响应式设计优化
建站VPS推荐:2025年高性能服务器配置指南
宝塔新建站点为何无法访问?如何排查?
制作证书网站有哪些,全国城建培训中心证书查询官网?
长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?
建站主机功能解析:服务器选择与快速搭建指南
c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】
如何在万网ECS上快速搭建专属网站?
如何零基础在云服务器搭建WordPress站点?
建站之星云端配置指南:模板选择与SEO优化一键生成
建站主机SSH密钥生成步骤及常见问题解答?
Thinkphp 中 distinct 的用法解析
建站之星安装路径如何正确选择及配置?
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
ui设计制作网站有哪些,手机UI设计网址吗?
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
如何在万网主机上快速搭建网站?
C#如何使用XPathNavigator高效查询XML
子杰智能建站系统|零代码开发与AI生成SEO优化指南
如何在云主机快速搭建网站站点?
如何在宝塔面板中修改默认建站目录?
如何构建满足综合性能需求的优质建站方案?
宝塔新建站点报错如何解决?
如何用美橙互联一键搭建多站合一网站?
如何在万网自助建站中设置域名及备案?
高端企业智能建站程序:SEO优化与响应式模板定制开发
如何在服务器上配置二级域名建站?
建站之星安装后如何配置SEO及设计样式?
在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?
安云自助建站系统如何快速提升SEO排名?
大连 网站制作,大连天途有线官网?
大型企业网站制作流程,做网站需要注册公司吗?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
*请认真填写需求信息,我们会在24小时内与您取得联系。