如何识别并显示WooCommerce购物车页面的产品品牌信息

花韻仙語
发布: 2025-09-19 12:25:23
原创
861人浏览过

如何识别并显示WooCommerce购物车页面的产品品牌信息

本教程详细介绍了如何在WooCommerce购物车页面为每个商品显示其所属品牌。核心在于正确识别您所使用的品牌插件或主题定义的品牌分类(taxonomy)名称,并通过wp_get_post_terms函数获取并展示品牌信息,从而避免常见的invalid_taxonomy错误。

1. 引言:在购物车中展示品牌的重要性

在woocommerce商店中,为商品添加品牌信息是提升用户体验和提供更详细商品属性的关键一环。然而,woocommerce默认的购物车页面通常不显示产品的品牌信息。为了让顾客在结算前能清晰地看到商品的品牌,我们需要进行一些自定义开发。本教程将指导您如何通过识别正确的wordpress分类(taxonomy)并利用相关函数,在购物车页面成功显示产品品牌。

2. 理解WordPress分类(Taxonomy)与品牌

在WordPress中,“分类”(Taxonomy)是一种将文章或自定义文章类型(如WooCommerce的产品)分组的方法。常见的分类有“分类目录”(Categories)和“标签”(Tags)。对于品牌功能,大多数WooCommerce品牌插件或主题会创建自己的自定义分类来存储品牌信息。例如,一个插件可能创建一个名为pwb-brand的分类,而另一个可能使用product_brand。理解这一点是解决问题的关键。

3. 常见问题:invalid_taxonomy错误解析

当尝试在购物车页面获取并显示品牌时,开发者常常会遇到WP_Error对象,其中包含invalid_taxonomy错误信息,如下所示:

object(WP_Error)#37768 (3) { ["errors"]=> array(1) { ["invalid_taxonomy"]=> array(1) { [0]=> string(22) "Invalid category" } } ["error_data"]=> array(0) { } ["additional_data":protected]=> array(0) { } }
登录后复制

这个错误明确指出,您在调用wp_get_post_terms()函数时提供的分类名称(例如pwb-brand或product_brand)是无效的,或者说,WordPress系统中并没有注册这样一个分类。这通常是因为您使用的品牌插件或主题采用了不同的分类名称。

4. 核心解决方案:确定正确的品牌分类名称

解决invalid_taxonomy错误的关键在于找到您的品牌插件或主题实际使用的分类名称。以下是几种确定正确分类名称的方法:

4.1 查阅插件/主题文档 (推荐)

最专业和直接的方法是查阅您所使用的品牌插件(如"Perfect WooCommerce Brands"、"WooCommerce Brands"等)或主题的官方文档。文档中通常会明确指出其用于品牌的自定义分类名称。

4.2 检查WordPress后台URL (最直接有效)

如果文档不易获取,或者您想快速验证,检查WordPress后台的品牌管理页面URL是最直接有效的方法:

  1. 登录您的WordPress后台。
  2. 导航到您管理产品品牌的页面。这通常在“产品”菜单下,例如“产品” -youjiankuohaophpcn “品牌”或“产品” -> “属性”中与品牌相关的部分。
  3. 浏览器地址栏中,您会看到一个类似于以下的URL:
    /wp-admin/edit-tags.php?taxonomy=ourbrandname&post_type=product
    登录后复制

    请注意taxonomy=后面的值。在这个例子中,ourbrandname就是您需要的目标分类名称。不同的插件会在这里显示不同的名称,例如pwb-brand、product_brand、yith_product_brand等。

一旦您确定了正确的分类名称,就可以将其用于后续的代码中。

5. 在WooCommerce购物车页面实现品牌显示

确定了正确的品牌分类名称后,我们就可以将其集成到WooCommerce购物车页面。为了实现这一功能,我们通常会修改WooCommerce的模板文件或使用其提供的钩子(Hooks)。

Booltool
Booltool

常用AI图片图像处理工具箱

Booltool 140
查看详情 Booltool

5.1 修改cart.php模板文件 (直接但需谨慎)

如果您选择直接修改WooCommerce的cart.php模板文件,请务必通过子主题进行,以避免在WooCommerce更新时丢失您的更改。

找到cart.php中显示产品标题或名称的区域(通常在循环foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item )内部)。在产品标题的下方,您可以插入以下代码:

<?php
// 获取购物车项对应的产品ID
$_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
$product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key );

// 替换 'your_correct_brand_taxonomy' 为您实际的品牌分类名称
$brand_taxonomy = 'your_correct_brand_taxonomy'; // 例如:'pwb-brand', 'product_brand'

// 使用 wp_get_post_terms 获取产品品牌
// 'fields' => 'names' 表示只返回品牌名称数组
$brands = wp_get_post_terms( $product_id, $brand_taxonomy, ['fields' => 'names'] );

// 检查是否成功获取品牌且没有错误
if ( ! is_wp_error( $brands ) && ! empty( $brands ) ) {
    echo '<p class="product-brand">';
    echo esc_html__( '品牌:', 'your-text-domain' ) . ' '; // 国际化处理
    echo implode(', ', $brands); // 如果有多个品牌,用逗号分隔显示
    echo '</p>';
}
?>
登录后复制

重要提示: 请将上述代码中的your_correct_brand_taxonomy替换为您通过上述方法确定的实际分类名称,例如pwb-brand。同时,'your-text-domain'也应替换为您主题或插件的文本域,用于国际化。

5.2 使用WooCommerce钩子 (推荐的最佳实践)

更推荐的做法是使用WooCommerce提供的动作(Action)和过滤器(Filter)钩子,将代码添加到您的子主题的functions.php文件或自定义插件中。这样可以避免直接修改模板文件,使您的代码更具可维护性和兼容性。

以下示例展示了如何使用woocommerce_cart_item_name过滤器在产品名称下方添加品牌信息:

/**
 * 在WooCommerce购物车页面产品名称下方显示品牌信息。
 *
 * @param string $product_name 原始产品名称HTML。
 * @param array  $cart_item    购物车项数据。
 * @param string $cart_item_key 购物车项的键。
 * @return string 修改后的产品名称HTML,包含品牌信息。
 */
function custom_display_product_brand_in_cart( $product_name, $cart_item, $cart_item_key ) {
    // 获取购物车项对应的产品ID
    $_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
    $product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key );

    // 替换 'your_correct_brand_taxonomy' 为您实际的品牌分类名称
    $brand_taxonomy = 'your_correct_brand_taxonomy'; // 例如:'pwb-brand', 'product_brand'

    // 使用 wp_get_post_terms 获取产品品牌
    $brands = wp_get_post_terms( $product_id, $brand_taxonomy, ['fields' => 'names'] );

    // 检查是否成功获取品牌且没有错误
    if ( ! is_wp_error( $brands ) && ! empty( $brands ) ) {
        // 构建品牌信息的HTML
        $brand_html = '<p class="product-brand">';
        $brand_html .= esc_html__( '品牌:', 'your-text-domain' ) . ' ';
        $brand_html .= implode(', ', $brands);
        $brand_html .= '</p>';

        // 将品牌信息添加到产品名称下方
        $product_name .= $brand_html;
    }

    return $product_name;
}
add_filter( 'woocommerce_cart_item_name', 'custom_display_product_brand_in_cart', 10, 3 );
登录后复制

同样,请将your_correct_brand_taxonomy替换为实际的分类名称,并将your-text-domain替换为您的文本域。

6. 注意事项与最佳实践

  • 使用子主题: 无论您是修改模板文件还是添加代码到functions.php,都强烈建议通过子主题进行操作。这可以确保在主题更新时您的自定义更改不会被覆盖。
  • 错误处理: 在使用wp_get_post_terms()函数时,始终通过! is_wp_error( $brands )来检查返回值是否为WP_Error对象,并检查! empty( $brands )以确保有品牌信息返回,从而避免潜在的PHP错误。
  • 分类名称的唯一性: 不同的品牌插件或主题会使用不同的分类名称。务必通过上述方法确定您环境中正确的分类名称。
  • 性能考量: wp_get_post_terms()函数通常具有内置的缓存机制,因此在购物车页面循环中调用它对性能的影响通常不大。
  • 国际化: 使用esc_html__()和__等WordPress国际化函数包裹静态文本,以便您的网站支持多语言

7. 总结

通过本教程,您应该已经掌握了在WooCommerce购物车页面显示产品品牌信息的关键步骤:首先,通过检查后台URL或查阅文档来识别正确的品牌分类名称;其次,利用wp_get_post_terms()函数获取品牌数据;最后,将获取到的品牌信息安全地集成到购物车页面,无论是通过修改模板文件还是更推荐的钩子方法。遵循这些指导原则,您将能够为您的客户提供更丰富、更清晰的购物体验。

以上就是如何识别并显示WooCommerce购物车页面的产品品牌信息的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号