我使用Woocommerce Brands插件,我想在每个产品放入购物车时添加品牌,就像显示变化一样。
所以产品名称,然后尺寸:XXX颜色:XXX品牌:XXX
我已经尝试了几种方法,但我似乎无法让它工作。
更新2 - 代码增强和优化(2019年4月)
现在,使用连接在woocommerce_get_item_data
过滤器钩子中的这个自定义函数,也可以像购物车项目中的产品属性名称+值一样添加品牌名称。
代码会有所不同(但获取品牌数据却相同):
add_filter( 'woocommerce_get_item_data', 'customizing_cart_item_data', 10, 2 );
function customizing_cart_item_data( $cart_item_data, $cart_item ) {
$product = $cart_item['data']; // The WC_Product Object
// Get product brands as a coma separated string of brand names
$brands = implode(', ', wp_get_post_terms($cart_item['product_id'], 'product_brand', ['fields' => 'names']))
if( ! emty( $brands ) ) {
$cart_item_data[] = array(
'name' => __( 'Brand', 'woocommerce' ),
'value' => $brands,
'display' => $brands,
);
}
return $cart_item_data;
}
代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。
以下是使用连接在woocommerce_cart_item_name
过滤器挂钩中的自定义函数将品牌名称添加到购物车项目中的产品名称的方法。
因为它们可以是为1个产品设置的多个品牌,我们将以逗号分隔的字符串显示它们(当存在多于1个时)。
这是代码:
add_filter( 'woocommerce_cart_item_name', 'customizing_cart_item_name', 10, 3 );
function customizing_cart_item_name( $product_name, $cart_item, $cart_item_key ) {
$product = $cart_item['data']; // The WC_Product Object
$permalink = $product->get_permalink(); // The product permalink
// Get product brands as a coma separated string of brand names
$brands = implode(', ', wp_get_post_terms($cart_item['product_id'], 'product_brand', ['fields' => 'names']));
if ( is_cart() && ! empty( $brands ) )
return sprintf( '<a href="%s">%s | %s</a>', esc_url( $product_permalink ), $product->get_name(), $brand );
elseif ( ! empty( $brands ) )
return $product_name . ' | ' . $brand;
else return $product_name;
}
代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。
所有代码都在Woocommerce 3+上进行测试并且有效。