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

Woocommerce自定义短描述内容仅登录用户可见未登录访客不显示问题

可能原因与修复方案

1. 静态缓存导致

绝大多数这类登录/未登录显示差异的问题都是缓存导致:站点一般会对未登录访客生成静态缓存页面,登录用户则直接返回动态渲染内容。你新增的自定义内容没有更新到未登录用户的缓存版本里,所以看不到。

  • 解决:清理站点缓存插件、服务器CDN/页面缓存,同时可以配置缓存规则,将产品页短描述区域设置为动态片段不缓存。

2. 代码逻辑兼容性问题

你当前的代码依赖全局$product对象和get_the_ID()获取产品信息,部分场景下(比如未登录用户访问时、其他插件修改了全局查询),全局变量没有正确初始化,会导致has_term判断不生效,另外你注册过滤器时声明了接受2个参数,但函数没有用到第二个参数,属于不规范写法,也容易出问题。

  • 修复后的代码示例:
add_filter('woocommerce_short_description', 'EPREL_content', 20, 1); // 优先级调整为20,晚于其他插件的逻辑执行
function EPREL_content( $EPRELlabel ) {
    // 先判断是否在产品页、拿到正确的产品对象
    if ( ! is_product() ) return $EPRELlabel;
    $product = wc_get_product( get_the_ID() );
    if ( ! $product instanceof WC_Product ) return $EPRELlabel;

    $product_tags = array( 'EPREL' );
    if( has_term( $product_tags, 'product_tag', $product->get_id() ) ) {
        $sku = esc_attr($product->get_sku()); // 做好属性转义避免安全问题
        $EPRELlabel .= '<div class="custom_content"><a data-elementor-open-lightbox="yes" href="/EPREL/EUEVK_'.$sku.'.png"><img src="https://econlux.de/EPREL/G.svg" width="80px" /></a><br /><a class="mini" target="_blank" href="/EPREL/EUEVK_'.$sku.'.png.pdf">Produktdatenblatt</a></div>';
    }
    return $EPRELlabel;
}

3. YITH询价插件冲突

YITH Request a Quote插件会修改产品页的渲染逻辑,如果你当前的钩子优先级比插件的钩子优先级高,就会出现你的代码先执行,插件后续修改短描述输出时把你追加的内容抹掉的情况。上面修复代码里已经把优先级调整为20,确保在插件逻辑执行之后再追加内容,如果还是不行可以临时禁用YITH插件测试,确认是否是插件冲突导致。

内容的提问来源于stack exchange,提问作者nici-

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:48:04