WordPress如何获取所有分类法术语及对应ACF图片字段
WordPress分类法术语ACF图片字段输出方案
核心逻辑
获取分类术语关联的ACF字段时,需要给get_field()函数传入第二个参数,指定当前查询的术语对象,否则函数会默认查询当前主循环的文章ID,拿不到分类级别的字段。
可直接复用的代码
把下面代码放到你front-page.php需要展示内容的位置,注意替换字段名为你自己的ACF图片字段键名:
<?php $terms = get_terms(array( 'taxonomy' => 'categories', 'hide_empty' => false, )); // 先判断查询结果有效性,避免 taxonomy 未注册时抛出错误 if (!empty($terms) && !is_wp_error($terms)) { foreach ($terms as $term) { // 输出分类名称,做安全转义 echo '<div class="category-card">'; echo '<h3 class="category-name">' . esc_html($term->name) . '</h3>'; /** * 注意:把下面的 'category_cover' 替换成你自己创建的ACF图片字段的键名 * 第二个参数直接传入$term对象,即可获取当前术语关联的字段值 */ $cover = get_field('category_cover', $term); if ($cover) { // 兼容ACF图片字段三种返回格式 if (is_array($cover)) { // 返回数组格式(推荐配置):可直接调用图片ID、alt、各尺寸地址 echo wp_get_attachment_image($cover['ID'], 'full', false, [ 'alt' => esc_attr($cover['alt'] ?: $term->name), 'class' => 'category-cover' ]); } elseif (is_string($cover)) { // 返回URL格式:直接拼接img标签 echo '<img src="' . esc_url($cover) . '" alt="' . esc_attr($term->name) . '" class="category-cover">'; } elseif (is_numeric($cover)) { // 返回ID格式:调用WP原生函数输出图片 echo wp_get_attachment_image($cover, 'full', false, [ 'class' => 'category-cover' ]); } } else { // 无图时的兜底逻辑,可按需替换为占位图输出 echo '<p class="no-cover">该分类暂未上传封面</p>'; } // 如需跳转分类归档页,可放开下面注释 // echo '<a href="' . esc_url(get_term_link($term)) . '" class="category-link">查看分类内容</a>'; echo '</div>'; } } ?>
注意事项
- 替换字段名时,要填ACF字段编辑页的「字段名称」(英文/下划线格式的键名),不要填中文的字段标签
- 推荐把ACF图片字段的返回格式设置为「图片数组」,方便后续适配不同尺寸、读取图片alt信息做SEO优化
- 代码里所有输出都加了WordPress原生转义函数,符合主题开发安全规范,不要直接去掉
- 可以根据自己的主题样式需求,给对应的div、h3、img标签加class写CSS样式
内容的提问来源于stack exchange,提问作者Roshan
相关产品推荐
相关产品推荐

