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

Woocommerce如何在产品列表页为配置upsells的商品显示专属徽章

问题根源

  • 原有代码中加入了is_product()判断条件,该函数仅在单品详情页返回true,产品列表/归档页触发时条件不成立,因此无任何输出
  • WooCommerce店铺循环的列表页中,全局$product对象可正常调用upsell相关方法获取配置数据,无需额外预加载

修复方案

将你添加到functions.php的代码替换为以下内容即可:

add_action( 'woocommerce_before_shop_loop_item', 'related_upsell_products_badge', 15 );
function related_upsell_products_badge() {
    global $product;
    // 移除错误的单品页判断,仅校验产品对象是否存在
    if ( isset( $product ) ) {
        $upsells = version_compare( WC_VERSION, '3.0', '<' ) ? $product->get_upsells() : $product->get_upsell_ids();
        if ( count( $upsells ) > 0 ) {
            echo '<span class="more_variants">Finns i fler varianter</span>';
        }
    }
}

可选调整说明

  • 如果不需要在单品页重复显示该徽章,可将判断条件修改为if ( isset( $product ) && !is_product() ),即可仅在列表页显示
  • 如果徽章显示位置不符合预期,可调整钩子优先级(将代码中的15改为更小的数值则位置更靠前,更大则更靠后),也可将钩子替换为woocommerce_before_shop_loop_item_title、woocommerce_after_shop_loop_item_title等其他店铺循环内置钩子调整展示位置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:15:08