我试图在购物车中显示产品变体描述。我尝试在 cart.php
模板中插入此代码:
if ( $_product->is_type( 'variation' ) ) {echo $_product->get_variation_description();}
遵循此文档https://docs.woocommerce.com/document/template-structure/
但它还没有出现。
不确定我在这里做错了什么。
有人可以帮忙吗?
由于
答案 0 :(得分:8)
WooCommerce第3版的更新兼容性
自WooCommerce 3以来,get_variation_description()
现已弃用,并由WC_Product
方法get_description()
取代。
要在购物车中产品商品变体说明 (过滤变体产品类型条件),您有 2种可能性(可能更多) ...):
woocommerce_cart_item_name
挂钩显示变体说明,无需修改任何模板。在这两种情况下,您都不需要在代码中使用
foreach
循环,如前所述,因为它已经存在。所以代码会更紧凑。
案例1 - 使用 woocommerce_cart_item_name
挂钩:
add_filter( 'woocommerce_cart_item_name', 'cart_variation_description', 20, 3);
function cart_variation_description( $name, $cart_item, $cart_item_key ) {
// Get the corresponding WC_Product
$product_item = $cart_item['data'];
if(!empty($product_item) && $product_item->is_type( 'variation' ) ) {
// WC 3+ compatibility
$descrition = version_compare( WC_VERSION, '3.0', '<' ) ? $product_item->get_variation_description() : $product_item->get_description();
$result = __( 'Description: ', 'woocommerce' ) . $descrition;
return $name . '<br>' . $result;
} else
return $name;
}
在这种情况下,描述仅显示在标题和变体属性值之间。
此代码位于活动子主题(或主题)的function.php文件中或任何插件文件中。
案例2 - 使用 cart/cart.php
模板(根据您的评论更新)。< / p>
您可以选择要显示此说明的位置(2个选项):
因此,您将根据您的选择在第86行或第90行的cart.php模板上插入此代码:
// Get the WC_Product
$product_item = $cart_item['data'];
if( ! empty( $product_item ) && $product_item->is_type( 'variation' ) ) {
// WC 3+ compatibility
$description = version_compare( WC_VERSION, '3.0', '<' ) ? $product_item->get_variation_description() : $product_item->get_description();
if( ! empty( $description ) ) {
// '<br>'. could be added optionally if needed
echo __( 'Description: ', 'woocommerce' ) . $description;;
}
}
所有代码都经过测试并且功能齐全
答案 1 :(得分:3)
这适用于WC 3.0
add_filter( 'woocommerce_cart_item_name', 'cart_variation_description', 20, 3);
function cart_variation_description( $title, $cart_item, $cart_item_key ) {
$item = $cart_item['data'];
if(!empty($item) && $item->is_type( 'variation' ) ) {
return $item->get_name();
} else
return $title;
}
答案 2 :(得分:0)
您也可以通过全局变量$woocommerce
获取它 -
global $woocommerce;
$cart_data = $woocommerce->cart->get_cart();
foreach ($cart_data as $value) {
$_product = $value['data'];
if( $_product->is_type( 'variation' ) ){
echo $_product->id . '<br>';
}
}
我已经检查过了。