ACF数字自定义字段转换为小时分钟格式问题求助
解决ACF分钟数字段转小时+分钟格式的问题
问题根源
你误用了ACF的函数:the_field('length')会直接输出字段内容,不会将值返回给变量$time。执行代码时,它会先把110打印到页面,而$time实际是null——后续计算时null会被当作0处理,所以最终页面显示的是110 + 0hr 0,也就是你看到的1100hr 0。
修复代码
把the_field()替换为get_field(),这个函数会返回字段值,不会直接输出:
<?php $time = get_field('length'); // 先判断字段是否存在且为有效数字,避免报错 if ($time && is_numeric($time)) { $hours = floor($time / 60); $minutes = $time % 60; // 拼接输出,处理小时或分钟为0的场景 $output = ''; if ($hours > 0) { $output .= $hours . 'hr '; } if ($minutes > 0 || $hours == 0) { $output .= $minutes . 'min'; } echo trim($output); } ?>
额外说明
- 加入
is_numeric($time)判断,能避免字段为空或非数字时出现报错 - 自动处理边界情况:输入45分钟显示
45min,输入60分钟显示1hr,输入110分钟显示1hr 40min
内容的提问来源于stack exchange,提问作者ProgressionFantasy
相关产品推荐
相关产品推荐

