WordPress自定义类型单页展示brique分类法:名称正常但图片无法显示咨询
问题修复方案
定位到的代码错误
- 变量引用错误:循环内直接使用了从未赋值的
$term_id变量,分类ID实际存储在$term对象的term_id属性中,原代码拼接出的自定义字段名完全不符合配置规则,根本匹配不到已设置的配图字段。 - ACF调用上下文缺失:通过
get_field()读取分类法下的自定义字段时,必须传入第二个参数标注当前读取的是哪个分类的字段,原代码未传该参数,函数默认会读取当前页面文章的自定义字段,自然拿不到分类对应的配图。 - 逻辑冗余失效:原代码的两层判断
$term->count > 0和$term->count !== 0条件完全重叠,且你已经设置了hide_empty => false要展示全部分类,这套判断没有实际作用,还会导致空分类项没有跳转链接、输出结构不符合预期。 - 核心API兼容问题:WordPress 4.5版本之后,
get_terms()不再支持“分类法单独作为第一参数、配置数组作为第二参数”的旧写法,需要统一将分类法合并到配置数组中传入,避免新版核心更新后报错。
可直接使用的修复后代码
<?php $tax = 'brique'; // 兼容新版WordPress的get_terms调用方式 $terms = get_terms( array( 'taxonomy' => $tax, 'hide_empty' => false, ) ); // 增加错误拦截,避免分类查询异常时直接暴露PHP报错 if ( is_wp_error( $terms ) ) { return; } foreach( $terms as $term ) { $term_link = get_term_link( $term ); // 修正字段读取逻辑:用分类真实ID拼接字段名,同时传入分类对象作为读取上下文 $image = get_field( 'visuel_' . $term->term_id, $term ); echo '<a href="' . esc_url( $term_link ) . '">'; // 增加空值判断,避免没有配图的分类输出空img标签报错 if ( !empty( $image ) ) { echo '<img src="' . esc_url( $image['url'] ) . '" alt="' . esc_attr( $image['alt'] ) .'">'; } echo esc_html( $term->name ); echo '</a>'; } ?>
调整说明
- 如果你的自定义字段没有给每个分类做带ID后缀的独立字段名(所有分类统一使用同一个
visuel字段名),只需要把get_field()的第一参数改成'visuel',保留第二参数$term即可正常读取。 - 所有动态输出内容都补充了对应的安全转义函数,避免出现XSS安全风险。
内容的提问来源于stack exchange,提问作者microb14
相关产品推荐
相关产品推荐

