
在woocommerce商店中,为商品添加品牌信息是提升用户体验和提供更详细商品属性的关键一环。然而,woocommerce默认的购物车页面通常不显示产品的品牌信息。为了让顾客在结算前能清晰地看到商品的品牌,我们需要进行一些自定义开发。本教程将指导您如何通过识别正确的wordpress分类(taxonomy)并利用相关函数,在购物车页面成功显示产品品牌。
在WordPress中,“分类”(Taxonomy)是一种将文章或自定义文章类型(如WooCommerce的产品)分组的方法。常见的分类有“分类目录”(Categories)和“标签”(Tags)。对于品牌功能,大多数WooCommerce品牌插件或主题会创建自己的自定义分类来存储品牌信息。例如,一个插件可能创建一个名为pwb-brand的分类,而另一个可能使用product_brand。理解这一点是解决问题的关键。
当尝试在购物车页面获取并显示品牌时,开发者常常会遇到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系统中并没有注册这样一个分类。这通常是因为您使用的品牌插件或主题采用了不同的分类名称。
解决invalid_taxonomy错误的关键在于找到您的品牌插件或主题实际使用的分类名称。以下是几种确定正确分类名称的方法:
最专业和直接的方法是查阅您所使用的品牌插件(如"Perfect WooCommerce Brands"、"WooCommerce Brands"等)或主题的官方文档。文档中通常会明确指出其用于品牌的自定义分类名称。
如果文档不易获取,或者您想快速验证,检查WordPress后台的品牌管理页面URL是最直接有效的方法:
/wp-admin/edit-tags.php?taxonomy=ourbrandname&post_type=product
请注意taxonomy=后面的值。在这个例子中,ourbrandname就是您需要的目标分类名称。不同的插件会在这里显示不同的名称,例如pwb-brand、product_brand、yith_product_brand等。
一旦您确定了正确的分类名称,就可以将其用于后续的代码中。
确定了正确的品牌分类名称后,我们就可以将其集成到WooCommerce购物车页面。为了实现这一功能,我们通常会修改WooCommerce的模板文件或使用其提供的钩子(Hooks)。
如果您选择直接修改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'也应替换为您主题或插件的文本域,用于国际化。
更推荐的做法是使用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替换为您的文本域。
通过本教程,您应该已经掌握了在WooCommerce购物车页面显示产品品牌信息的关键步骤:首先,通过检查后台URL或查阅文档来识别正确的品牌分类名称;其次,利用wp_get_post_terms()函数获取品牌数据;最后,将获取到的品牌信息安全地集成到购物车页面,无论是通过修改模板文件还是更推荐的钩子方法。遵循这些指导原则,您将能够为您的客户提供更丰富、更清晰的购物体验。
以上就是如何识别并显示WooCommerce购物车页面的产品品牌信息的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号