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

WordPress中如何将ACF字段(Town)值去重后存入数组并展示?

解决WordPress房产页面城镇列表重复问题

我来帮你搞定这个重复显示城镇的问题!这是遍历自定义文章类型时很常见的小坑,下面是修改后的代码,能完美实现城镇名称的去重,最终只展示唯一的城镇列表:

<?php
// 先初始化一个空数组,用来存已经出现过的城镇
$unique_towns = array();

// WP_Query 的查询参数保持不变
$args = array(
    'post_type' => 'property',
    'posts_per_page' => -1,
    'meta_key' => 'property_status',
    'meta_value' => 'For Sale'
);
$query = new WP_Query($args);
?>

<?php if( $query->have_posts() ): ?>
    <?php while( $query->have_posts() ): $query->the_post(); ?>
        <?php
        // 获取当前房产的城镇字段值
        $town = get_field('town');
        // 检查:城镇值不为空,并且还没在数组里出现过
        if( !empty($town) && !in_array($town, $unique_towns) ) {
            // 满足条件就把城镇加入数组
            $unique_towns[] = $town;
        }
        ?>
    <?php endwhile; ?>

    <!-- 现在输出去重后的城镇列表 -->
    <ul>
        <?php foreach( $unique_towns as $town ): ?>
            <li><?php echo esc_html($town); ?></li>
        <?php endforeach; ?>
    </ul>

    <?php wp_reset_postdata(); // 这里用wp_reset_postdata更合适,因为我们用的是WP_Query ?>
<?php endif; ?>

关键修改点说明:

  • 数组存唯一值:先创建$unique_towns空数组,用来记录已经出现过的城镇,避免重复存储
  • 循环内做判断:遍历房产时,先拿到town值,用in_array()检查是否已经在数组里,同时排除空值(防止出现空的列表项)
  • 单独输出列表:等所有房产遍历完成后,再遍历去重后的数组生成最终列表,而不是边遍历边输出
  • 重置函数优化:把wp_reset_query()换成wp_reset_postdata(),前者主要针对query_posts(),后者更适配WP_Query的场景

这样改完之后,你的城镇列表就只会每个城镇显示一次啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:56:36