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

如何用PHP获取WordPress Custom Post Types数据并正常显示前端表格

问题原因

代码存在3处错误,直接导致字段值无法正常显示、表格结构错乱:

  • PHP语法错误:判断条件写为if(get_rates_list),遗漏PHP变量必须的$前缀,正确写法为if($get_rates_list),原判断逻辑完全失效,循环无法正常执行。
  • 表格结构错误:<thead>表头、<tbody>起始标签被放在foreach循环内部,每遍历一条数据就会重复生成表头,DOM结构不符合HTML表格规范,会导致渲染异常。
  • 字段绑定缺失:Duration对应的<td>标签内部为空,没有输出对应时长字段的值,因此该列始终显示空白。

相关异常截图

后台字段配置界面
前端异常显示效果

修复后代码
<table class="rates-table">
    <?php 
    $get_rates_list = get_field('rates_optional');
    if($get_rates_list): ?>
    <!-- 表头移到循环外,全局仅渲染一次 -->
    <thead>
        <tr>
            <td><h3 class="inside-model-single">Duration</h3></td>
            <td><h3 class="inside-model-single">Incall</h3></td>
            <td><h3 class="inside-model-single">Outcall</h3></td>
        </tr>
    </thead>
    <tbody>
        <?php foreach($get_rates_list as $rate):?>
        <tr>
            <!-- 补全Duration列字段输出,若你的时长字段键名不是duration,替换为实际键名即可 -->
            <td><?php echo esc_html($rate['duration']); ?></td>
            <td><span class="rate_value"><?php echo esc_html($rate['incall_1_hour']);?></span></td>
            <td><span class="rate_value"><?php echo esc_html($rate['outcall_1_hour']);?></span></td>
        </tr>
        <?php endforeach; ?>
    </tbody>
    <?php endif; ?>
</table>

提示:输出自定义字段内容时添加esc_html()是WordPress开发的安全规范,可以避免XSS注入风险。如果你的Duration字段在ACF后台设置的键名不是duration,把对应键名替换成你实际配置的值即可正常显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 03:57:32