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

WordPress电商站:替换商品标题上方品牌文字为对应品牌Logo

问题分析与解决方案

你的代码没生效主要有3个核心问题:

  • 条件判断错误:用了is_product_category()(判断是否是商品分类归档页),但你要修改的是单个商品页面的标题,应该用is_product()
  • 缺少品牌匹配逻辑:原代码没有判断当前商品属于哪个品牌,无法针对性替换Logo
  • 图片路径硬编码且未适配品牌:image.png是固定路径,没有根据品牌切换对应Logo

修正后的代码示例

假设你的品牌是通过WooCommerce的「产品属性」(比如属性slug为brand)来管理的,或者用自定义字段存储品牌名称,以下是适配的代码:

// 移除默认商品标题钩子
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_title', 5);
// 添加自定义标题钩子
add_action('woocommerce_single_product_summary', 'custom_template_single_title', 5);

function custom_template_single_title() {
    // 仅在单个商品页面执行
    if (is_product()) {
        global $product;
        // 获取商品品牌(根据你的实际存储方式调整)
        // 方式1:如果用WooCommerce产品属性(属性slug为brand)
        $brand_terms = wc_get_product_terms($product->get_id(), 'brand', array('fields' => 'names'));
        $brand = !empty($brand_terms) ? $brand_terms[0] : '';

        // 方式2:如果用自定义字段(字段名为product_brand)
        // $brand = get_post_meta($product->get_id(), 'product_brand', true);

        // 定义品牌与Logo的对应关系
        $brand_logos = array(
            '品牌A' => get_template_directory_uri() . '/images/brand-a-logo.png',
            '品牌B' => get_template_directory_uri() . '/images/brand-b-logo.png',
            // 继续添加更多品牌
        );

        // 开始输出标题
        echo '<h1 itemprop="name" class="product_title entry-title">';
        // 如果当前商品有匹配的品牌,输出Logo,否则输出品牌文字(可选)
        if (!empty($brand) && isset($brand_logos[$brand])) {
            echo '<img src="' . esc_url($brand_logos[$brand]) . '" alt="' . esc_attr($brand) . '" style="margin-bottom: 10px; display: block;">';
        } elseif (!empty($brand)) {
            echo '<span class="brand-text">' . esc_html($brand) . '</span>';
        }
        // 输出商品标题
        echo esc_html($product->get_title()) . '</h1>';
    }
}

关键调整说明

  1. 条件修正:用is_product()确保代码只在单个商品页面运行
  2. 品牌获取:根据你实际的品牌存储方式选择对应代码(产品属性/自定义字段),如果是用第三方品牌插件,需要替换成插件对应的获取方法
  3. Logo路径:用get_template_directory_uri()获取主题目录绝对路径,避免相对路径失效,记得把Logo图片放在主题的images文件夹下,或者修改路径到你的存储位置
  4. 安全处理:用esc_url()、esc_attr()、esc_html()处理输出内容,避免XSS安全问题

额外排查点

  • 确保代码添加到当前启用主题的functions.php文件,不要添加到父主题(如果用子主题的话)
  • 清除WordPress缓存和浏览器缓存,避免旧代码残留
  • 检查品牌名称的大小写、空格是否和$brand_logos数组里的键完全匹配

内容的提问来源于stack exchange,提问作者Davesh Thakur

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 01:22:12