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

WooCommerce从YITH Brands切换至WC Brands后自定义代码适配咨询

问题

我运营的WooCommerce商店原本使用第三方插件YITH Brands实现产品品牌功能,因兼容性问题现已切换至官方插件WC Brands。但此前开发者编写的依赖YITH Brands的网站功能代码,在禁用该插件后完全失效——具体是在产品标题上方显示品牌名称的代码:

add_action( 'woocommerce_before_shop_loop_item_title', 'aq_display_brand_before_title' );
function aq_display_brand_before_title(){
    global $product;
    $product_id = $product->get_id();
    $brands = wp_get_post_terms( $product_id, 'yith_product_brand' );
    foreach( $brands as $brand ) echo '<a href="'.get_term_link($brand->term_id).'">'.$brand->name.'</a>';
}

我在WC Brands文档中找到的类似代码无法在网站上显示内容:

add_action( 'woocommerce_single_product_summary', 'wc_brands_add_brand_name', 1 );
function wc_brands_add_brand_name() {
    global $product;
    $brands =  implode(', ', wp_get_post_terms($product->get_id(), 'product_brand', ['fields' => 'names']));
    echo "<p>Brand: " . $brands . "</p>";
}

请问能否修改第一段代码,使其调用WC Brands的相关变量,以保留原有功能并安全禁用YITH Brands?

解决方案

可以直接修改原有代码适配WC Brands,核心是替换分类法标识并增加基础错误判断,修改后的代码如下:

add_action( 'woocommerce_before_shop_loop_item_title', 'aq_display_brand_before_title' );
function aq_display_brand_before_title(){
    global $product;
    
    // 安全判断:确保产品对象有效
    if ( ! $product || ! is_a( $product, 'WC_Product' ) ) {
        return;
    }
    
    $product_id = $product->get_id();
    // 替换为WC Brands的分类法:product_brand
    $brands = wp_get_post_terms( $product_id, 'product_brand' );
    
    // 检查是否获取到品牌且无错误
    if ( ! empty( $brands ) && ! is_wp_error( $brands ) ) {
        foreach( $brands as $brand ) {
            // 确保品牌链接有效
            $brand_link = get_term_link( $brand );
            if ( ! is_wp_error( $brand_link ) ) {
                echo '<a href="' . esc_url( $brand_link ) . '">' . esc_html( $brand->name ) . '</a>';
            }
        }
    }
}

修改说明:

  • 替换分类法:将原代码中的yith_product_brand替换为WC Brands使用的product_brand分类法标识,这是核心适配点
  • 增加安全判断:添加产品对象有效性检查、品牌获取结果检查,避免因异常情况导致网站报错
  • 增强输出安全性:使用esc_url()和esc_html()对链接和文本进行转义,符合WordPress安全规范
  • 保留原有逻辑:维持原有的钩子woocommerce_before_shop_loop_item_title和品牌链接输出格式,确保显示位置和功能与之前完全一致

注意事项:

  1. 确保WC Brands插件已正常激活并完成品牌数据迁移(若有)
  2. 检查产品是否已正确关联WC Brands创建的品牌分类
  3. 修改后建议清除网站缓存,确保代码生效

内容的提问来源于stack exchange,提问作者Graham Toomey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 11:32:46