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

PHP如何获取WordPress自定义文章类型的标题并按套餐分类展示

问题原因

你当前代码的核心问题是在Basic套餐板块内直接遍历了所有套餐列表,所以会把所有套餐关联的播客全部输出在Basic板块下,另外两个Starter、Exclusive板块完全没有写播客输出逻辑,自然无法展示对应内容。

修复方案

你可以先统一预处理所有套餐数据,按套餐名称匹配对应板块再输出内容,修改后的完整代码如下:

<div class="container-intro-head">
<div class="row">
    <?php
    // 预处理套餐数据,按名称存储对应播客
    $package_podcasts = [];
    if ($get_packages_list) {
        foreach ($get_packages_list as $get_package) {
            $package_name = get_the_title($get_package->ID);
            // 统一转大写避免大小写匹配问题
            $package_key = strtoupper(trim($package_name));
            $package_podcasts[$package_key] = get_field('podcasts', $get_package->ID) ?: [];
        }
    }
    ?>
                        
    <div class="col-md-4">
        <h3 class="package-head-intro">BASIC BUNDLE - $9.99</h3>
        <?php if (!empty($package_podcasts['BASIC BUNDLE'])): ?>
            <?php foreach ($package_podcasts['BASIC BUNDLE'] as $podcast): ?>
                <?php $podcast_details = get_post($podcast); ?>
                <h5 class="item-main-title"><?php echo esc_html($podcast_details->post_title); ?></h5>
            <?php endforeach; ?>
        <?php endif; ?>
    </div>
                            
    <div class="col-md-4">
        <h3 class="package-head-intro">STARTER BUNDLE - $14.99</h3>
        <?php if (!empty($package_podcasts['STARTER BUNDLE'])): ?>
            <?php foreach ($package_podcasts['STARTER BUNDLE'] as $podcast): ?>
                <?php $podcast_details = get_post($podcast); ?>
                <h5 class="item-main-title"><?php echo esc_html($podcast_details->post_title); ?></h5>
            <?php endforeach; ?>
        <?php endif; ?>
    </div>
                            
    <div class="col-md-4">
        <h3 class="package-head-intro">EXCLUSIVE BUNDLE - $19.99</h3>
        <?php if (!empty($package_podcasts['EXCLUSIVE BUNDLE'])): ?>
            <?php foreach ($package_podcasts['EXCLUSIVE BUNDLE'] as $podcast): ?>
                <?php $podcast_details = get_post($podcast); ?>
                <h5 class="item-main-title"><?php echo esc_html($podcast_details->post_title); ?></h5>
            <?php endforeach; ?>
        <?php endif; ?>
    </div>
</div>
</div>

注意事项

  • 请确保后台创建的三个套餐的标题和代码中BASIC BUNDLE、STARTER BUNDLE、EXCLUSIVE BUNDLE完全一致,若需要更高兼容性,可以改用套餐别名(slug)作为匹配键
  • 代码中增加了esc_html()转义输出,符合WordPress开发安全规范,避免XSS漏洞
  • 如果套餐标题后续有调整,同步修改代码中数组对应的键名即可正常匹配

内容的提问来源于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.27 01:45:03