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

如何获取所有文章的ACF字段值并关联文章链接生成字母序目录

实现方案

核心逻辑说明

  • 首先通过WordPress原生查询批量获取所有已发布、且设置了目标ACF字段的文章
  • 遍历查询结果,将关键词与对应文章的访问链接配对存入数组
  • 对数组按关键词的字母顺序升序排序
  • 遍历排序后的数组生成目录列表

完整实现代码

假设你创建的ACF字段的字段名是unique_article_keyword,使用前替换为你自己的实际字段名即可,代码可以插入到主题对应的模板文件中使用:

// 替换为你自己创建的ACF字段的实际字段名
$target_acf_field = 'unique_article_keyword';
$keyword_list = [];

// 配置查询参数
$args = [
    'post_type' => 'post', // 若为自定义文章类型,替换为对应类型别名即可
    'post_status' => 'publish',
    'posts_per_page' => -1, // 获取所有符合条件的文章
    'meta_key' => $target_acf_field, // 自动过滤未设置该字段的文章
    'no_found_rows' => true, // 禁用分页统计,提升查询性能
];

$keyword_query = new WP_Query($args);

if ($keyword_query->have_posts()) {
    while ($keyword_query->have_posts()) {
        $keyword_query->the_post();
        $current_keyword = get_field($target_acf_field);
        // 二次校验避免空值进入列表
        if (!empty($current_keyword)) {
            $keyword_list[] = [
                'keyword' => $current_keyword,
                'url' => get_permalink()
            ];
        }
    }
    wp_reset_postdata(); // 重置文章数据,避免污染页面主查询
}

// 按关键词字母顺序排序,不区分大小写
usort($keyword_list, function($a, $b) {
    return strcasecmp($a['keyword'], $b['keyword']);
});

// 输出目录列表
if (!empty($keyword_list)) {
    echo '<ul class="keyword-directory">';
    foreach ($keyword_list as $item) {
        echo '<li><a href="'. esc_url($item['url']) .'">'. esc_html($item['keyword']) .'</a></li>';
    }
    echo '</ul>';
}

注意事项

  • 中文关键词默认会按UTF-8编码顺序排序,如果需要按拼音排序,需要额外引入中文拼音转换类库处理
  • 网站文章量超过1000篇的场景,建议给查询添加缓存,避免每次页面加载都执行全表查询影响性能

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:06:04