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

自定义产品分类法terms循环调用ACF图片字段src为空问题咨询

问题修复方案

代码存在的核心错误

  • 循环分类法term时,错误调用get_queried_object()获取当前页面的term ID,而非循环中每个$term自身的ID,导致ACF字段取值对象完全错误
  • 输出图片URL时未加echo语句,PHP不会自动输出变量值,直接导致src属性为空
  • 短代码回调函数要求返回输出内容而非直接打印,同时代码中$product_id未定义,需要先获取当前产品对象
  • 未做空值判断,当分类项未设置图片时会输出空的src属性,不符合HTML规范

修复后完整代码

function minerals() {
    // 先获取当前产品ID
    global $product;
    if (!$product) return '';
    $product_id = $product->get_id();

    $terms = get_the_terms($product_id, 'minerals');
    if (empty($terms) || is_wp_error($terms)) return '';

    $output = '';
    foreach ($terms as $term) {
        $product_term = esc_html($term->name);
        $term_slug = esc_attr($term->slug);
        // 直接拿当前循环的term ID取ACF字段
        $term_image = get_field('mineral_image', $term);
        $term_link = esc_url(home_url('/minerals/' . $term_slug));

        // 拼接输出内容
        $output .= '<div>';
        // 只有图片存在时才输出img标签
        if ($term_image) {
            $output .= '<img src="' . esc_url($term_image) . '" alt="' . $product_term . '">';
        }
        $output .= '<a href="' . $term_link . '">' . $product_term . '</a>';
        $output .= '</div>';
    }

    return $output;
}
// 注册短代码
add_shortcode('short-minerals', 'minerals');

验证步骤

  • 确认ACF字段mineral_image的返回格式设置为URL
  • 确认每个minerals分类项的后台都已上传对应的图片
  • 短代码调用为[short-minerals],注意短代码名称和注册时保持一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:54:07