You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP中添加foreach循环读取ACF Repeater多营业时间行?

解决ACF Repeater营业时间多行显示问题

你说得对,只需要给$hours数组添加foreach循环就能遍历所有营业时间条目。原来的代码仅调用了数组第一个元素($hours[0]),所以只能显示一行数据。

修改后的完整代码

<ul>
    <?php foreach($locations as $location) {
        $title = get_the_title($location);
        $address = '';
        $address .= get_field('address', $location) . '<br>';
        $address .= get_field('city', $location) . ', ';
        $address .= get_field('state', $location) . ', ';
        $address .= get_field('zip_code', $location); 
        $hours = get_field('days_open', $location);
        $phone = get_field('contact_number', $location);
        $email = get_field('contact_email', $location);
    ?>
    <li>
        <h3><?php echo $title; ?></h3>
        <address><?php echo $address; ?></address>
        
        <?php if($phone) { ?>
            <a href="tel:<?php echo $phone ?>"><?php echo $phone; ?></a>
        <?php }; ?>

        <?php if($email) { ?>
            <a href="mailto:<?php echo $email ?>"><?php echo $email; ?></a>
        <?php }; ?>

        <!-- 新增营业时间循环 -->
        <?php if($hours && is_array($hours)) { ?>
            <div class="location-hours">
                <?php foreach($hours as $hour) { ?>
                    <p><?php echo $hour['days'] . ': ' . $hour['times']; ?></p>
                <?php } ?>
            </div>
        <?php } ?>
    </li>
    <?php } ?>
</ul>

关键修改说明

  • 移除了原代码中单独调用$hours[0]的片段,替换为遍历整个$hours数组的foreach循环
  • 新增is_array($hours)判断,确保变量为有效数组时再执行循环,避免出现报错
  • 用<div class="location-hours">包裹所有营业时间,方便后续样式调整;每行营业时间用<p>标签包裹,页面结构更清晰

修改后代码会自动读取并展示ACF Repeater中添加的所有营业时间条目。

内容的提问来源于stack exchange,提问作者Rafa971

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 00:25:26